Socket.io 聊天模块的理想选择



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

我应该和Socket.io一起去还是HTTP

谢谢。

任何类型的交互式计时的HTTP轮询都非常低效。 你会有成千上万的客户端反复问你的服务器,"你有什么新东西给我吗?"服务器经常回答"没有,还没有"。

webSockets(socket.io 用作传输)之所以被发明出来,正是因为它们比HTTP轮询更有效地进行双向交互式通信。

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

请参阅以下参考资料:

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

阿贾克斯 vs Socket.io

这项技术可以堆叠扩展吗?

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

使用 Node 在 AWS 上建立 600k 个并发 websocket 连接.js

节点.js w/1M 并发连接!

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

对于初学者来说,使用 socket.io 聊天非常简单易懂和集成。但是,带宽量将在很大程度上取决于您要从服务器发送的数据量以及客户端将发送的数据量。带宽使用情况还取决于所使用的 Socket.IO 传输以及应用程序的检测信号间隔。

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

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

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

最新更新