【问题标题】:Cross-browser BSD-style sockets or Node.js streams跨浏览器 BSD 样式的套接字或 Node.js 流
【发布时间】:2013-06-25 11:14:23
【问题描述】:
我正在用 JavaScript 实现流式传输协议。该协议是根据字节流定义的,而不是消息。我希望能够与使用此协议的浏览器通信。
我过去曾使用过 Socket.io 来轻松实现跨浏览器全双工网络。但是,在这种情况下,我需要 BSD 样式的套接字。理想情况下,我可以编写 Node.js 流 API 并在浏览器中使用相同(或非常相似)的代码。
字节流有类似 Socket.io 的东西吗?即经过良好测试、跨浏览器、多传输、心跳等。
【问题讨论】:
标签:
node.js
sockets
websocket
socket.io
【解决方案2】:
Socket.IO 在幕后使用了大量技术,以使其非常易于访问和可靠。很多用户会有 Long Polling 回退,这只是纯 HTTP 协议。
虽然 WebSockets 确实支持二进制类型的消息,但它与长轮询或任何其他后备技术不同,因此 Socket.IO 不会支持它,因为它不是在所有传输上都支持。
WebSockets 和 Socket.IO 也是纯粹的基于消息的通信协议。如果使用 WebSocket,它会围绕每条消息进行框架化,这将增加流式传输的开销。
您需要的是基于流的通信,而不是基于消息的通信。据我所知,这是一个很长的话题,在网络世界中仍然不清楚。
尽管您可以将 WebRTC 视为未来流数据的可能性,但它可能会满足您的需求。
其他一些选择是使用浏览器的插件或扩展,例如 flash、unity、bespoke stuff 等,以启用真正的流媒体功能。