Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Socket.io是聊天模块的理想选择吗_Angularjs_Node.js_Sockets_Websocket_Chat - Fatal编程技术网

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

Angularjs Socket.io是聊天模块的理想选择吗,angularjs,node.js,sockets,websocket,chat,Angularjs,Node.js,Sockets,Websocket,Chat,我正在开发一个基于Angularjs和Node.js的应用程序。这是一个基于组织的应用程序。在这个应用程序中,我必须实现聊天功能。所以我们都知道,Socket.io是即时消息应用程序及其可靠性的最佳解决方案。但除此之外,我对Socket.io没有什么疑问。据我所知,当我们使用socket编程(在我的例子中是socket.io)时,它为每个连接保留一个端口。如果一个组织的规模太大怎么办?行吗?在服务器端,我使用的是expressjs。Socket.io会在服务器上产生额外的负载吗 我应该使用Soc

我正在开发一个基于
Angularjs
Node.js
的应用程序。这是一个基于组织的应用程序。在这个应用程序中,我必须实现聊天功能。所以我们都知道,
Socket.io
是即时消息应用程序及其可靠性的最佳解决方案。但除此之外,我对Socket.io没有什么疑问。据我所知,当我们使用socket编程(在我的例子中是socket.io)时,它为每个连接保留一个端口。如果一个组织的规模太大怎么办?行吗?在服务器端,我使用的是
expressjs
Socket.io
会在服务器上产生额外的负载吗

我应该使用
Socket.io
还是
HTTP


谢谢。

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

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


有关更多详细信息,请参阅此链接

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

WebSocket(socket.io用作传输)的发明正是因为它们比HTTP轮询更高效地进行双向交互通信

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

见以下参考资料:


使用Socket.io。它与当今高度互动的应用程序(如聊天模块)非常相关。使用web套接字,不存在协商协议,只要相关用户向web服务器注册服务,连接就保持打开状态。有效负载明显小于http/https协议。

您认为单台服务器需要支持多大规模(同时连接的用户)?还有,您有什么理由使用集群吗?而且,在任何一秒钟内,有多少客户会同时发送或接收聊天?这取决于组织的规模。这可能会有所不同。是的,你是对的,如果组织规模很大,我不会使用单一服务器或小型服务器。你的问题没有意义。这项技术肯定会奏效的。它能以你想要的规模工作吗?这完全取决于您想要的规模、您愿意部署的硬件以及用户将使用的负载模式类型。因为你不愿意提供这些要求的答案,所以你的问题真的无法回答。是的,这种技术在一定的规模、一定的负载和一定的硬件部署下工作。如果您要求将其与轮询HTTP客户端进行比较,那么轮询是一种巨大的资源浪费和可伸缩性浪费,因为大多数情况下,您的服务器所做的只是回答没有数据可供使用的轮询请求。这就是webSocket/socket.io的全部要点——您可以直接将数据推送到客户端,而无需客户端轮询。非活动套接字不占用服务器CPU,只占用少量内存。服务器可以配置为同时处理数十万个套接字,并且可以集群。@jfriend00我最初的疑问是:
HTTP
情况下的负载会更少,或者
Socket.io
会更少?其中我需要一个非常沉重的配置?添加了参考文章。我明白你的意思,现在feathers JS也是一个非常著名的实时应用程序框架,它在引擎盖下使用Socket.io。