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

标签 c++ websocket server-push

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

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

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

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

最佳答案

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

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

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

关于c++ - 无法通过 WebSockets 发送二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601082/

相关文章:

java - Spring websocket多个tomcat服务器

web - 堆栈溢出 : Automatic information about update

c++ - 内部嵌套循环的实用语法未在嵌套循环中正确忽略

C++ HW - 定义类 - 头文件中有其他类问题对象的对象(超出范围?),(也重新定义运算符,读入读出)

c++ - 在 C++ 上获取对 Perl 的 undefined reference

c++ - 如何使用 C++ 中的通用 vector 对动态内存中的对象列表进行排序?

javascript - Knockout - 在动态元素上绑定(bind)多个变量

java - 如何修复丢失的 WebSocket ServerContainer,以使用 CometD、Jetty 和 Spring 启用 WebSocket?

android - 不发送 4KB 消息的 Android 浏览器的替代服务器推送/ cometd 实现?

HTTP/2 推送 promise 行为