【问题标题】:Overhead in websocket payload for binaryjs with node.js使用 node.js 的 binaryjs 的 websocket 有效负载开销
【发布时间】:2014-01-04 00:58:28
【问题描述】:

我已经实现了一个通过 websocket 发送多媒体内容的应用程序。 通过使用wireshark分析流量,我观察到使用http和websocket发送相同内容的有效负载不同。 对于 websocket,有效负载总是比 http 大 6 个字节。 (标题明显完全不同,什么都清楚。)

我使用 Node.js 和服务器上的模块 binaryjs 在 javascript 上实现它。

Node.js 或 binaryjs 库在多媒体数据的开头添加 5 个字节(看起来像 0x93 0x02 0xda 0x5e 0xcb),并在其末尾添加 1 个字节(看起来像 0x15)。 知道这个开销可能来自哪里吗?

【问题讨论】:

  • Looks like binaryjs 正在将数据块包装在添加一些元数据的“消息”中。
  • websockets 使用“data:”前缀和换行符后缀
  • 感谢您的回答。那么应该是 binaryjs 添加元数据还是应该为每个 websocket 实现发生这种情况? @dandavis,这些前缀和后缀看起来如何(多少字节和哪个)?
  • 情况正常;详细阅读 websockets 草案。

标签: javascript node.js websocket


【解决方案1】:

正如 robertklep 所说,您提到的开销是因为元数据。 binaryjs 在序列化/反序列化(或打包/解包)二进制数据中使用的 binarypack 会添加这些字节。 binarypack 使用了大部分 messagepack 规范并添加了一些额外的规范。

可能添加这些额外字节的函数是pack_bin,它适用于二进制文件。你可以看到here

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 2016-05-29
    • 1970-01-01
    • 2014-12-08
    • 2018-09-18
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多