WebSocketSharp 的最大短信大小是多少?
Posted
技术标签:
【中文标题】WebSocketSharp 的最大短信大小是多少?【英文标题】:What's the maximum text message size of WebSocketSharp? 【发布时间】:2021-06-15 07:46:51 【问题描述】:我想知道: 如果消息字符串超过最大大小,是否会被拆分成小块数据,并通过 websocket 发送到服务器端?
【问题讨论】:
【参考方案1】:查看source code 似乎没有最大尺寸。有一个内部字段FragmentLength
带有以下注释
/// <summary>
/// Represents the length used to determine whether the data should be fragmented in sending.
/// </summary>
/// <remarks>
/// <para>
/// The data will be fragmented if that length is greater than the value of this field.
/// </para>
/// <para>
/// If you would like to change the value, you must set it to a value between <c>125</c> and
/// <c>Int32.MaxValue - 14</c> inclusive.
/// </para>
/// </remarks>
【讨论】:
所以当我们实现receiveasync的时候,我们可以创建任意大小的buffer,客户端通过websocket发送的消息会根据buffer的大小被分割成块,对吧? 我记不太清了,但我认为提到的字段已初始化为 1016,即块的大小。只需搜索 ja fieldname 即可查看来源。 非常感谢!不确定你是否使用过 WebSocket 库 docs.microsoft.com/en-us/dotnet/api/…,我发现 websocket-sharp 有一些不可靠的问题,并且有一段时间没有更新。所以我正在考虑再次使用 websocket 库分别实现 websocket 客户端和服务器。那么数据的块大小是多少?我看到 ReceiveAsync 会根据我们设置的缓冲区大小将数据分成块,对吗?【参考方案2】:我认为说 WebSocket 具有最大消息长度是错误的。有一些buffer,如果您的信息不止于此,您将按部分收到您的信息。但只有最后一部分会有EndOfMessage=true。
【讨论】:
谢谢,其实我是在问关于sdk的问题:websocket-sharp,nuget.org/packages/WebSocketSharp/1.0.3-rc11关于你提到的,我假设消息的块/片段不符合对象json反序列化。 我不知道这个包到底是如何工作的,但我认为当所有的块都被接收到时,它里面的对象反序列化就会完成。【参考方案3】:我觉得比较合适的方式是直接在github上问这个问题https://github.com/sta/websocket-sharp
【讨论】:
好,我只是发现文档很安静。 确实你是对的,但讨论应该在项目的问题区域进行,实际上也在这里 ;-) 编辑:问题似乎,好像维护得不太好跨度>以上是关于WebSocketSharp 的最大短信大小是多少?的主要内容,如果未能解决你的问题,请参考以下文章