我很困惑。我试图了解 Websockets 是如何工作的,并在 node.js 和客户端中构建了一个服务器。 我无法理解的是,Websocket 如何发送数据。 在从客户端(浏览器)发送之前是否对数据库进行了 base64 编码? “二进制类型”是如何工作的?仅用于接收?
我是否也必须在服务器上实现这些? 服务器端是否需要“二进制类型”选项?
我什么时候需要 blob 和 arraybuffer ?取决于小数据和大数据? if get 获取视频和音频文件会怎样?
我查看了如何在网络上发送图片,我发现 通常的解决方案是,图片经过 base64 编码,然后发送。 但是如果浏览器中的 Websocket API 已经将二进制文件编码为 base64,我就不必这样做了..
对不起,我很困惑,希望有人能帮助我
最佳答案
阅读RFC 6455 , 特别是 5. Data Framing ,您可以在那里找到答案。
在 WebSocket 协议(protocol)中,数据使用一系列帧(而不是 base64 编码)传输。 RFC 6455 中定义的帧类型如下。
- 延续帧(操作码 = 0x0)
- 文本 框架(操作码 = 0x1)
- 二进制 帧(操作码 = 0x2)
- 关闭帧(操作码 = 0x8)
- Ping 帧(操作码 = 0x9)
- Pong 框架(操作码 = 0xA)
体面的 WebSocket 库(包括客户端库和服务器端库)可以处理所有这些帧并提供发送/接收它们的函数/方法。因此,无论数据是文本还是二进制,您都不必担心数据的编码方式(除非您选择了一个糟糕的 WebSocket 库)。
请注意,客户端和服务器都可以发送/接收文本帧和二进制帧。
关于javascript - Websocket base64,二进制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213862/