3

我正在开发一个查看器应用程序,其中服务器捕获图像,执行一些图像处理操作,这需要在 HTML5 画布上显示在客户端。我编写的服务器是 VC++ 并使用http://www.codeproject.com/Articles/371188/A-Cplusplus-Websocket-server-for-realtime-interact

到目前为止,我已经实现了所需的功能。现在我需要做的就是优化。Reference 是一个用于发送字符串的聊天应用程序,因此我将数据编码为 7 位格式。这导致开销。我需要二进制数据传输能力。所以我修改了编码和框架(现在操作码是 130,二进制消息而不是 129。)我可以说服务器部分没问题。我观察了传出帧,它遵循协议。我在客户端面临问题。

每当客户端收到传入消息时,如果所有字节都在限制范围内(0 到 127),它会调用 onMessage() 并且我可以成功解码传入消息。然而,即使是一个大于 127 的字符的引入也会导致客户端调用 onClose()。连接关闭,我无法找到原因。请帮帮我。

PS:我使用的是 chrome 22.0 和 Firefox 17.0

4

2 回答 2

1

您如何观察传出帧以及您观察到的标头字节是什么?听起来您实际上可能没有成功设置二进制操作码,这会在浏览器中触发 UTF-8 验证失败。

于 2012-11-29T13:33:22.863 回答
1

看起来您的问题与您如何组装框架有关?由于您有一个已建立的连接,当 onmessage 事件即将触发时终止,我认为它与帧相关?

如果您研究网络 -> WebSocket -> Google Chrome 的连接框架怎么办?它说什么?

它可能超出了您的范围?但我是 XSockets.NET (C#) 框架的开发人员之一,我们在那里提供二进制支持,如果您有兴趣,有一个我最近刚刚发布的示例,它可以在https://github.com/MagnusThor/XSockets.Binary.Controller.Example上找到

于 2012-11-28T14:38:29.277 回答