与Node.js一起使用哪个websocket库?[关闭]

当前,有大量用于node.js 的Websocket库,最受欢迎的似乎是:

但是我找不到它们之间的任何可靠的具体比较……显然Socket.io很棒,但是已经过时并且构建失败。ws和websocket-node都声称它们是最快的。而且engine.io似乎是新的,但比轻巧的武器要重得多。

如果我们或某人能够汇总一个答案,作为使用哪个套接字库以及何时使用以及它们之间的比较的指南,那将是惊人的。

小宇宙神乐2020/03/17 17:04:46

通过这个社区Wiki答案获得成功。随时根据您的改进编辑我

  • ws WebSocket服务器和node.js的客户端。最快的库之一,即使不是最快的库。

  • websocket-node WebSocket服务器和node.js的客户端

  • websocket-driver-node WebSocket服务器和客户端协议解析器node.js-在faye-websocket-node中使用

  • faye-websocket-node用于Node.js的WebSocket服务器和客户端-在faye和sockjs中使用

  • socket.io 用于node.js的WebSocket服务器和客户端+用于浏览器的客户端+(v0具有最新到最旧的后备,Socket.io的v1使用engine.io)+通道-用于stack.io。客户端库尝试在断开连接时重新连接。

  • sockjs WebSocket服务器和node.js等客户端和其他客户端+浏览器客户端+最新到最旧的后备

  • faye WebSocket服务器和node.js等客户端和客户端+浏览器客户端+后备+支持其他服务器端语言

  • deepstream.io可集群实时服务器,处理WebSocket和TCP连接,并提供数据同步,发布/ 订阅和请求/响应

  • socketcluster WebSocket服务器群集,它利用计算机上的所有CPU内核。例如,如果您要使用具有32个内核的xlarge Amazon EC2实例,则您将能够处理单个实例几乎32倍的流量。

  • primus为上述大多数库提供一个通用API,以实现所有库的轻松切换和稳定性改进。

何时使用:

  • 当您要在客户端上使用本机WebSocket实现时,请使用基本的WebSocket服务器,请注意浏览器不兼容

  • 在关注浏览器后备时使用后备库

  • 在关注频道时使用功能齐全的库

  • 当您不知道要使用什么时,可以使用primus;当由于项目需求变化或需要额外的连接稳定性而需要切换框架时,则不打算重写应用程序。

在哪里测试:

Firecamp是针对SocketIO,WS和所有主要实时技术的GUI测试环境。在开发实时事件时对其进行调试。

路易神奇猪猪2020/03/17 17:04:46

更新:此后,由于提到的较新版本的库已发布,此答案已过时。

Socket.IO v0.9已过时且有故障,而Engine.IO是其后继产品。Socket.IO v1.0(即将发布)将使用Engine.IO,并且比v0.9更好。我建议您使用Engine.IO,直到Socket.IO v1.0发布为止。

“ ws”不支持回退,因此,如果客户端浏览器不支持websockets,它将不起作用,这与Socket.IO和Engine.IO不同,后者在Websockets不可用时会使用长轮询等。但是,“ ws”似乎是目前最快的库。

参见我比较Socket.IO,Engine.IO和Primus的文章:https ://medium.com/p/b63bfca0539