浏览器可以将有效负载数据拆分为多个 websocket 帧吗?

Posted

技术标签:

【中文标题】浏览器可以将有效负载数据拆分为多个 websocket 帧吗?【英文标题】:Can browser split up payload data into multiple websocket frames? 【发布时间】:2014-03-08 19:23:42 【问题描述】:

在下面的 javascript 中,我通过 websocket 最多发送 200 个字节(在连接和握手之后):

     buf= new Uint8Array(200);
     /* filling buf with data*/
     ws.send(buf.buffer);

另一边有一个简单的 iocp c++​​ 服务器,它接收这 200 个字节,前面是几个字节的 websocket 帧。

我可以假设浏览器总是一次性发送这 200 个字节(+ websocket 头)吗? 或者我应该总是在服务器端检查这是否是最后一帧(通过检查 websocket 头中的第一位)?

提前感谢您的提示。

【问题讨论】:

【参考方案1】:

您应该始终检查 FIN 位,根据 RFC6455,浏览器完全有可能拆分有效负载(取决于 Web 套接字帧的一些上限)。

【讨论】:

以上是关于浏览器可以将有效负载数据拆分为多个 websocket 帧吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地将具有一定周期性的列表拆分为多个列表?

为啥我不能激发 TCP 将 send() 拆分为多个 recv()

如何创建作业以将 MDF 文件拆分为多个 ndf 文件

数据库优化-水平拆分 垂直拆分

如何在jmeter tcp采样器中发送多个十六进制数据有效负载?

数据库表的拆分