javascript - Websocket base64,二进制类型

标签 javascript node.js networking websocket network-programming

我很困惑。我试图了解 Websockets 是如何工作的,并在 node.js 和客户端中构建了一个服务器。 我无法理解的是,Websocket 如何发送数据。 在从客户端(浏览器)发送之前是否对数据库进行了 base64 编码? “二进制类型”是如何工作的?仅用于接收?

我是否也必须在服务器上实现这些? 服务器端是否需要“二进制类型”选项?

我什么时候需要 blob 和 arraybuffer ?取决于小数据和大数据? if get 获取视频和音频文件会怎样?

我查看了如何在网络上发送图片,我发现 通常的解决方案是,图片经过 base64 编码,然后发送。 但是如果浏览器中的 Websocket API 已经将二进制文件编码为 base64,我就不必这样做了..

对不起,我很困惑,希望有人能帮助我

最佳答案

阅读RFC 6455 , 特别是 5. Data Framing ,您可以在那里找到答案。

在 WebSocket 协议(protocol)中,数据使用一系列(而不是 base64 编码)传输。 RFC 6455 中定义的帧类型如下。

  1. 延续帧(操作码 = 0x0)
  2. 文本 框架(操作码 = 0x1)
  3. 二进制 帧(操作码 = 0x2)
  4. 关闭帧(操作码 = 0x8)
  5. Ping 帧(操作码 = 0x9)
  6. Pong 框架(操作码 = 0xA)

体面的 WebSocket 库(包括客户端库和服务器端库)可以处理所有这些帧并提供发送/接收它们的函数/方法。因此,无论数据是文本还是二进制,您都不必担心数据的编码方式(除非您选择了一个糟糕的 WebSocket 库)。

请注意,客户端和服务器都可以发送/接收文本帧和二进制帧。

关于javascript - Websocket base64,二进制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31213862/

相关文章:

使用模板文字的 Javascript ES6 console.log 对象

javascript - 从 json 结果中提取数据标签

node.js - 使用 forEach 循环处理 mongoose 错误

json - 如何将JSON数据保存到Google Firebase的Firestore数据库?

java - Netty:向许多服务器发送消息时出现问题

javascript - 在 React Js 中添加和删除输入字段,且值不会重置

javascript - 将对象存储在本地存储中

mysql - Node js(Express js)Mysql读取ECONNRESET错误

python-3.x - 如何使用 `http.server` 实现一个简单的 Captive Portal?

c - 如何确定用户的路由器/ISP 是否不支持 IPv6 连接?