Majid Goudarzi
2 سال پیش توسط Majid Goudarzi مطرح شد
0 پاسخ

طریقه استفاده از کتابخانه zlib در pnpm

سلام.من از vue3 استفاده میکنم.
به یه مشکل برخورد کردم و chatgpt هم نتونست راه حلی بهم بده:
این فانکشن منه:

function createSocketPriceBingxFutures(coin) {
  const path = "wss://open-api-swap.bingx.com/swap-market"
  const CHANNEL = { "id": "e745cd6d-d0f6-4a70-8d5a-043e4c741b40", "reqType": "sub", "dataType": "BTC-USDT@depth5@500ms" }

  let socket = null
  let receivedMessage = ""

  function onOpen() {
    console.log("WebSocket connected")
    socket.send(JSON.stringify(CHANNEL))
  }

  function onError(error) {
    console.log("WebSocket error:", error)
  }

  function onMessage(event) {
    const compressedData = event.data

    zlib.gunzip(compressedData, (err, decompressedData) => {
      if (err) {
        console.error('Error decompressing data:', err)

        return
      }

      const decodedMsg = decompressedData.toString()

      console.log(decodedMsg)

      if (decodedMsg === 'Ping') {
        socket.send('Pong')
        console.log('Pong')
      }

      receivedMessage = decodedMsg
    })
  }

  function initWebSocket() {
    socket = new WebSocket(path)
    socket.onopen = onOpen
    socket.onmessage = onMessage
    socket.onerror = onError
  }

  initWebSocket()
}

اما نتیجه در مرورگر این اروره:

Uncaught Error: Module "node:zlib" has been externalized for browser compatibility. Cannot access "node:zlib.gunzip" in client code. See <https://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility> for more details.  
at Object.get (**vite-browser-external:node:zlib:3:11)  
at WebSocket.onMessage (CrmSalesByCountries.vue:262:10)  
get @** vite-browser-external:node:zlib:3  
onMessage @ CrmSalesByCountries.vue:262

از pako هم استفاده کردم.اما فایده ای نداشت.چون این دیتا فقط با zlib.gunzip قابل خواندنه.در nodejs سایت مرجع نیز به zlib اشاره شده:

<https://bingx-api.github.io/docs/#/en-us/swapV2/socket/market.html#Subscribe%20Market%20Depth%20Data>