我正在寻找一种通过Internet传输数据的好方法,并且我在C++/windows环境下工作。数据是二进制的,是提取图像的压缩 Blob 。输入和要求如下:
我是网络编程的新手,到目前为止,我可以弄清楚以下方法之一将是合适的。
客户端在浏览器上运行(在浏览器上显示实时图像)。服务器运行 native C++代码时。请让我知道是否还有其他方法可以达到同样的效果?我应该去哪一个?为什么?
最佳答案
如果服务器确定了发送图像的速度(看起来像这样),则服务器推送样式的解决方案将很有意义。如今,大多数浏览器(甚至是非浏览器)正在解决的问题是 WebSockets 。
WebSocket与大多数专有协议(protocol)相比,除了成为广泛采用的标准之外,其主要优点是它们运行在HTTP之上,因此可以渗透(大多数)代理和防火墙等。
在服务器端,您可能会集成 node.js ,这使您可以轻松实现WebSockets,并附带许多其他库。它是用C++编写的,并且可以通过C++和JavaScript进行扩展,node.js为其托管了VM。 node.js的主要功能是在每个级别都是异步的,从而使该编程风格成为默认的编程风格。
但是,当然还有其他方法可以在服务器端实现WebSocket,也许node.js超出了您的需求。我已经在Windows上为node.js实现了C++扩展,并使用socket.io来为较旧的浏览器进行WebSocket和非WebSocket传输,这对我来说很好。
但这只是文本数据。在二进制数据的情况下,socket.io不会执行此操作,因此您可以 check out 在WebSockets上执行二进制操作的other libraries。
关于http - 寻找一种通过互联网传输关键实时数据的好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13005805/