适用于浏览器的Websocket库?

19

是否有可以在浏览器中使用的 WebSocket 库(类似于 jQuery 的 AJAX),并且可以回退到 AJAX 长轮询?

5个回答

23

我发现 Socket.IO 在 WebSocket 协议之上实现了一个奇怪的、武断的层。我更愿意直接传递原始数据,所以在我的项目中,我选择了 web-socket-js

web-socket-js 的工作方式类似于 Socket.IO,如果不支持 WebSocket,则会回退到使用 Flash socket。因此,它可以在所有主要支持 Flash 的浏览器中运行(我亲自测试过)。

只需确保在防火墙中打开端口 843,否则您将收到 Flash 安全策略错误。您可能还需要一个脚本来监听端口 843... 我使用了 em-websocket 作为 socket 服务器,并且在其 readme 中,我相信有一个链接到提供此功能的 Perl 脚本。


我发现以下链接对于托管策略脚本非常有帮助 - http://briangonzalez.org/posts/websockets-polyfill - Ashley

10

带有WebSockets支持和备用长轮询解决方案的库可能不仅取决于浏览器客户端,还取决于服务器端技术。例如,可以尝试查看socket.io


15
Socket IO 很棒,但重要的是要理解它是基于 WebSocket(并回退到其他机制)实现的一层层面。它不完全是一个“WebSocket库”,而是一个使用 WebSocket(以及其他东西)进行客户端-服务器通信的框架。 - Oliver Moran

6
我最近几个月一直在使用SignalR,它非常棒。它所能做到的与Socket.IO相同,甚至可能更好。它的降级顺序为:Web Sockets、Server Sent Events、Forever Frame、AJAX长轮询。但仅适用于.NET平台。
参考链接:https://github.com/SignalR/SignalR/wiki/Faq

0

是的,你也需要服务器支持。Kaazing WebSocket Gateway支持非常快速的仿真/ Polyfill。如果你有像Flash这样的插件,它可能会使用它(机会优化),但如果你没有它,它将使用加密流来模拟WebSocket,这比长轮询更有效率。它还带有SSE和跨文档消息支持和仿真,以及许多更高级的协议抽象(JMS / Stomp,XMPP等)。


0
Union Server支持WebSocket,并具备回退到彗星式AJAX通信的功能。Union是一个用于创建连接应用程序的平台,例如在线多人游戏。

http://www.unionplatform.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接