寻找一种通过互联网传输关键实时数据的好方法

Eis*_*ack 5 sockets network-programming msmq http rtp

我正在寻找一种通过互联网传输数据的好方法,我在C++/windows环境下工作.数据是二进制的,是提取图像的压缩blob.输入和要求如下:

  1. 6kB /包@ 10包/秒(每秒60kBytes)
  2. 可靠的数据传输

我是网络编程的新手,到目前为止,我可以发现下列方法之一是合适的.

  1. 套接字
  2. MSMQ(MS消息队列)

客户端在浏览器上运行(在浏览器上显示实时图像).服务器运行本机C++代码.如果有其他方法可以实现相同的目的,请告诉我?我应该选择哪一个?为什么?

Eug*_*sky 3

如果服务器确定发送图像的速度(看起来就是这样),那么服务器推送式解决方案就有意义了。如今,大多数浏览器(甚至非浏览器)都选择了WebSocket

WebSocket 相对于大多数专有协议的主要优势除了成为广泛采用的标准之外,还在于它们运行在 HTTP 之上,因此可以渗透(大多数)代理和防火墙等。

在服务器端,您可以集成node.js,它允许您轻松实现 WebSockets,并附带许多其他库。它是用 C++ 编写的,可通过 C++ 和 JavaScript 进行扩展,node.js 为其托管虚拟机。Node.js 的主要特性是在每个级别都是异步的,这使得这种编程风格成为默认的。

但是当然还有其他方法可以在服务器端实现 WebSockets,也许 node.js 比您需要的更多。我在 Windows 上为 node.js 实现了 C++ 扩展,并使用socket.io为旧版浏览器进行 WebSocket 和非 WebSocket 传输,这对我来说效果很好。

但那是文本数据。在您的二进制数据情况下,socket.io 不会执行此操作,因此您可以查看其他通过 WebSocket 执行二进制数据的库。