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

时间:2017-04-05 05:14:23

标签: angularjs node.js sockets websocket chat

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

我应该使用Socket.io还是HTTP

感谢。

3 个答案:

答案 0 :(得分:2)

任何类型的交互式时序的HTTP轮询都非常低效。你会有成千上万的客户反复询问你的服务器,“你有什么新东西吗?”并且服务器定期响应“不,没有”。

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

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

请参阅以下参考资料:

What are the pitfalls of using Websockets in place of RESTful HTTP?

Ajax vs Socket.io

Can this technology stack scale?

Do HTML WebSockets maintain an open connection for each client? Does this scale?

600k concurrent websocket connections on AWS using Node.js

Node.js w/1M concurrent connections!

HTML5 WebSocket: A Quantum Leap in Scalability for the Web

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

使用Socket.io。今天,它对于高度互动的应用程序(如聊天模块)具有不可思议的意义。使用Web套接字时,没有协商协议,只要相关用户正在向Web服务器注册服务,连接就保持打开状态。有效负载明显小于http / https协议。