Javascript Apache服务器上WebSocket的开销

Javascript Apache服务器上WebSocket的开销,javascript,php,node.js,apache,websocket,Javascript,Php,Node.js,Apache,Websocket,我用PHP+Apache+JS+html5建立了一个网站。现在,我必须每秒告诉用户服务器是否已连接并准备好接收数据和/或internet连接是否丢失/可用,或者其他任何可以告诉用户由于服务器或internet连接不可用而不要向服务器发送数据的信息 为此,我可以使用Ajax进行长轮询,并保持每秒ping我的服务器,但这肯定会在我的Apache服务器上造成大量网络开销,因为我的客户机一次大约有上万个,所以保持ping服务器不是一个好的选择。因此,我决定使用WebSocket 我已经在谷歌上搜索了大约

我用
PHP+Apache+JS+html5
建立了一个网站。现在,我必须每秒告诉用户服务器是否已连接并准备好接收数据和/或internet连接是否丢失/可用,或者其他任何可以告诉用户由于服务器或internet连接不可用而不要向服务器发送数据的信息

为此,我可以使用Ajax进行
长轮询
,并保持每秒ping我的服务器,但这肯定会在我的Apache服务器上造成大量网络开销,因为我的客户机一次大约有上万个,所以保持ping服务器不是一个好的选择。因此,我决定使用WebSocket

我已经在谷歌上搜索了大约2天,但还没有找到足够好的文章来回答我关于
WebSocket
Apache+PHP
的3个基本问题

1) 如果一旦WebSocket与服务器建立了连接,那么它是否会像与服务器进行长时间轮询一样保持活动状态,或者它背后的机制是什么?我的意思是WebSocket如何保持它与服务器的关系?它是否保持与服务器的轮询,因此在客户端和服务器之间始终存在连接

2) 若您对上述问题的回答是肯定的,那个么若我使用WebSocket,那个么服务器端的网络/IO开销会是多少,因为客户端和服务器之间存在连续连接。想象一下,如果一次有数十万个客户端在线,它会在服务器网络或IO上产生什么负载

3) 在服务器上使用Apache+PHP时,使用WebSocket的最佳方法是什么?有没有关于这方面的好文章可以让我研究如何使用WebSocket与Apache服务器通信?我发现了这个问题,但答案不太好。在这个问题中,它限制了专家们不包括任何有系统管理工具的答案,而我要求提供任何需要的答案

我有一个VPS服务器,所以调试和安装一些工具不是问题

任何帮助都将不胜感激。谢谢你的问候

1) 如果一旦WebSocket与服务器建立了连接,那么它是否会像与服务器进行长时间轮询一样保持活动状态,或者它背后的机制是什么?我的意思是WebSocket如何保持它与服务器的关系?它是否保持与服务器的轮询,因此在客户端和服务器之间始终存在连接

是的,它保持活动状态,并且客户端和服务器之间始终存在连接。但是,客户端需要维护连接和连接异常。在本例中,它是您的javascript代码

2) 若您对上述问题的回答是肯定的,那个么若我使用WebSocket,那个么服务器端的网络/IO开销会是多少,因为客户端和服务器之间存在连续连接。想象一下,如果一次有数十万个客户端在线,它会在服务器网络或IO上产生什么负载

WebSocket连接是在TCP/IP级别处理的,根据定义,当没有数据通过TCP隧道时,它们不是消耗资源的操作。因此,与其担心CPU和内存概念,不如担心连接数量的限制。考虑使用负载均衡器进行套接字连接,如果期望超过10000个并发连接,则使用多个服务器。 3) 在服务器上使用Apache+PHP时,使用WebSocket的最佳方法是什么?有没有关于这方面的好文章可以让我研究如何使用WebSocket与Apache服务器通信?我发现了这个问题,但在Apache服务器上使用WebSocket并不能很好地回答这个问题。在这个问题中,它限制了专家们不包括任何有系统管理工具的答案,而我要求提供任何需要的答案

对于您的这样一个用例——获取服务器的状态,我建议使用MessageBroker,而不是将这个简单的操作加载到Apache

请考虑看,或


它们都支持WebSocket,并且都有各自的优缺点。对它们进行小范围的概念验证,然后选择最适合您的

投反对票的人也请说明原因?回答得好!让我看一下你的推荐信。是否被接受为答案?如果我接受,那么没有人会看这个问题,因此我可能失去获得更好答案的机会。所以,请稍等,看看其他人是否有更好的答案,否则我肯定会接受。沃伦!根据您的建议,我阅读了有关蚊子和其他MQTT经纪人的信息。但是我不明白如果依赖于WebSocket,那么使用它的好处是什么,正如在文章中所说的,主要的好处是可以轻松地分配负载,因为您期望很多。否则,通过php/apache打开套接字也会有好处