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

Unable to send binary data over WebSockets

本文关键字:二进制 数据 WebSockets      更新时间:2023-10-16

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

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

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

附言:我正在使用chrome 22.0和Firefox 17.0

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

如果你在谷歌浏览器上研究网络->WebSocket->连接框架,会怎么样?上面写着什么?

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

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