在 Javascript 中通过 Web Sockets 发送和接收二进制数据

Web Sockets 提供了一种实时双向通信的方式,可以在浏览器和服务器之间传输数据。默认情况下,Web Sockets 发送和接收的数据是文本格式。但有时候,我们需要发送和接收二进制数据,如图片、音频或视频等。

发送二进制数据

要发送二进制数据,我们可以使用 Blob 或 ArrayBuffer 对象来创建二进制数据,并将其作为消息发送给服务器。以下是一个示例:

-- ---- ---------- ------------
----- --------- - --- ----------------- ----- ----- ----- -------

-- -------- ---- ---
----- ---- - --- -------------------------

-- ---- --------- --
----- ------ - --- ---------------------------------

-- -------------
------------------------------- ------- -- -
  ------------------
---

在此示例中,我们使用 Uint8Array 创建一个包含字节数据的数组,并使用 Blob 包装它。然后,我们使用 WebSocket 对象发送这个 Blob 对象。

接收二进制数据

当服务器发送二进制数据时,我们可以使用 WebSocket 对象的 binaryType 属性设置 arraybuffer,以便在接收数据时直接获取 ArrayBuffer 对象。以下是一个示例:

-- ---- --------- ------ ---------- --- -------------
----- ------ - --- ---------------------------------
----------------- - --------------

-- -------------
---------------------------------- ------- -- -
  ----- ----------- - -----------

  -- -- ---------- - -------- ----------
  ----- --------- - --- ------------------------
  -----------------------
---

在此示例中,我们设置 WebSocket 对象的 binaryType 属性为 'arraybuffer',以便在接收数据时直接获取 ArrayBuffer 对象。然后,我们使用 Uint8Array 可以轻松地将 ArrayBuffer 转换为 TypedArray,或使用 DataView 对象来解析二进制数据。

总结

通过 Web Sockets 发送和接收二进制数据是实现实时双向通信的重要手段之一。在发送数据时,我们可以使用 BlobArrayBuffer 对象创建二进制数据,并将其作为消息发送给服务器。在接收数据时,我们可以使用 WebSocket 对象的 binaryType 属性设置为 'arraybuffer',以便在接收数据时直接获取 ArrayBuffer 对象。

希望这篇文章对你有所帮助!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/31105