Web Sockets 提供了一种实时双向通信的方式,可以在浏览器和服务器之间传输数据。默认情况下,Web Sockets 发送和接收的数据是文本格式。但有时候,我们需要发送和接收二进制数据,如图片、音频或视频等。
发送二进制数据
要发送二进制数据,我们可以使用 Blob 或 ArrayBuffer 对象来创建二进制数据,并将其作为消息发送给服务器。以下是一个示例:
-- ---- ---------- ------------ ----- --------- - --- ----------------- ----- ----- ----- ------- -- -------- ---- --- ----- ---- - --- ------------------------- -- ---- --------- -- ----- ------ - --- --------------------------------- -- ------------- ------------------------------- ------- -- - ------------------ ---
在此示例中,我们使用 Uint8Array
创建一个包含字节数据的数组,并使用 Blob
包装它。然后,我们使用 WebSocket
对象发送这个 Blob
对象。
接收二进制数据
当服务器发送二进制数据时,我们可以使用 WebSocket
对象的 binaryType
属性设置 arraybuffer
,以便在接收数据时直接获取 ArrayBuffer
对象。以下是一个示例:
-- ---- --------- ------ ---------- --- ------------- ----- ------ - --- --------------------------------- ----------------- - -------------- -- ------------- ---------------------------------- ------- -- - ----- ----------- - ----------- -- -- ---------- - -------- ---------- ----- --------- - --- ------------------------ ----------------------- ---
在此示例中,我们设置 WebSocket
对象的 binaryType
属性为 'arraybuffer'
,以便在接收数据时直接获取 ArrayBuffer
对象。然后,我们使用 Uint8Array
可以轻松地将 ArrayBuffer
转换为 TypedArray
,或使用 DataView
对象来解析二进制数据。
总结
通过 Web Sockets 发送和接收二进制数据是实现实时双向通信的重要手段之一。在发送数据时,我们可以使用 Blob
或 ArrayBuffer
对象创建二进制数据,并将其作为消息发送给服务器。在接收数据时,我们可以使用 WebSocket
对象的 binaryType
属性设置为 'arraybuffer'
,以便在接收数据时直接获取 ArrayBuffer
对象。
希望这篇文章对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/31105