关于 angularjs:是 Socket.io 理想的聊天模块吗

Is Socket.io Ideal for chat module

我正在开发一个基于 AngularjsNode.js 的应用程序。这是一个基于组织的应用程序。在这个应用程序中,我必须实现聊天功能。众所周知,Socket.io 是即时通讯应用程序及其可靠性的最佳解决方案。但除此之外,我对 Socket.io 几乎没有任何疑问。据我了解,当我们使用套接字编程(在我的情况下为 Socket.io)时,它为每个连接保留一个端口。如果组织的规模太大怎么办?它会起作用吗?在服务器端,我使用 Express jsSocket.io 会在服务器上产生额外的负载吗?

我应该选择 Socket.io 还是 HTTP

谢谢。


HTTP 轮询任何类型的交互时间都是非常低效的。您将有数以万计的客户反复询问您的服务器,"您有什么新东西要给我吗?"并且服务器会定期响应"不,还没有"。

webSockets(socket.io 用作传输)的发明正是因为它们比 HTTP 轮询更有效地进行两种交互通信。

现代服务器可以配置为同时处理数十万个 webSocket 连接。在您的应用程序的实际工作中,您的一台服务器实际上可以处理多少个服务器取决于许多因素,您在问题中都没有透露这些因素。但是,对于双向聊天来说,选择 webSocket/socket.io 并不是一个糟糕的架构选择——这就是发明这种应用程序的目的,因为它通常比 HTTP 轮询更好。

请参阅以下参考资料:

使用 Websockets 代替 RESTful HTTP 有哪些陷阱?

Ajax 与 Socket.io

这种技术栈可以扩展吗?

HTML WebSockets 是否为每个客户端维护一个开放的连接?这可以缩放吗?

AWS 上使用 Node.js 的 600k 并发 websocket 连接

具有 1M 并发连接的 Node.js!

HTML5 WebSocket:Web 可扩展性的巨大飞跃


使用 Socket.io。今天,它与聊天模块等高度交互的应用程序非常相关。使用 Web 套接字,只要相关用户正在向 Web 服务器注册服务,就没有协商协议并且连接保持打开状态。负载明显小于 http/https 协议。


对于初学者来说,使用 socket.io 聊天非常容易理解和集成。但是,带宽量在很大程度上取决于您要从服务器发送的数据量,以及客户端将发送的数据量。带宽使用还取决于您使用的 Socket.IO 传输方式以及应用程序的心跳间隔。

应用程序的性能影响还因您运行的应用程序类型以及您的机器和/或网络的性能能力而异。但是,无论您的计算机功能如何,5000 个客户端都会对性能产生相当大的影响,除非您跨多个内核扩展应用程序。

您可以参考此链接了解更多详情。链接