我正在用 JavaScript 实现流协议。该协议是根据字节流定义的,而不是消息。我希望能够使用此协议与浏览器交谈。
我过去曾使用过 Socket.io 来轻松实现跨浏览器全双工网络。但是,在这种情况下,我需要 BSD 样式的套接字。理想情况下,我可以编写 Node.js 流 API 并在浏览器中使用相同(或非常相似)的代码。
字节流有类似 Socket.io 的东西吗?即经过良好测试、跨浏览器、多传输、心跳等。
Socket.IO 在幕后使用了大量技术,以使其非常易于访问和可靠。很多用户会有 Long Polling 回退,这只是纯 HTTP 协议。
虽然 WebSockets 确实支持二进制类型的消息,但它与长轮询或任何其他后备技术不同,因此 Socket.IO 不会支持它,因为它不是在所有传输上都支持。
WebSockets 和 Socket.IO 也是纯粹的基于消息的通信协议。如果使用 WebSockets,它会围绕每条消息进行框架化,这将增加流式传输的开销。
您需要的是基于流的通信,而不是基于消息的通信。据我所知,这是一个很长的话题,在网络世界中仍然不清楚。
尽管您可以将 WebRTC 视为流数据的未来可能性,但它可能会满足您的需求。
其他一些选择是使用浏览器的插件或扩展,例如 flash、unity、bespoke stuff 等,以启用真正的流媒体功能。
到目前为止,http://binaryjs.com/是最接近我需要的。不幸的是,文档表明它有些不成熟。我很高兴找到一个更稳定的库,支持更广泛的浏览器。