无法通过WebSockets发送二进制数据

时间:2012-11-28 08:46:50

标签: c++ websocket server-push

我正在开发一个查看器应用程序,其中服务器捕获图像,执行一些图像处理操作,这需要在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

2 个答案:

答案 0 :(得分:1)

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

如果你研究网络怎么办 - > WebSocket - >你的连接框架我谷歌Chrome?这是什么意思?

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

找到

答案 1 :(得分:1)

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