微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html5 – 服务器端的服务器发送事件成本

如果我正确地理解了Server-Sent Events原则,每次客户端注册到EventSource时,它实际上会打开一个新的HTTP连接到管理事件的资源.与其他HTTP请求相反,连接保持活动,因此专用于此客户端的服务器进程/线程将持续运行,直到客户端断开连接.

如果我们有1000个客户端连接到使用SSE的应用程序怎么办?我们有1000个进程/线程(做同样的事情)同时运行只是为了处理SSEs?我想我错了,但如果我不是,它是否比通常的AJAX轮询方法更有效率,至少服务器不需要同时运行多个进程/线程?

解决方法

是的,每个客户端可以尽可能长地连接.有1000个并发用户,您将有1000个TCP / IP连接打开.

但是,每个连接是否使用线程都取决于服务器.

Apache通常会为每个连接运行一个线程,所以它是相当昂贵的.使用Apache,最好禁用KeepAlive并使用轮询.

OTOH与基于事件的服务器,如node.js,您只需一个管理所有连接的进程,因此每个连接的成本要低得多,您应该能够容易地打开数千个连接.

关于SSE的很酷的事情是你可以使用它来进行投票.它具有retry:指令,指定在重新连接(轮询)之前客户端应等待多长时间.只要发送并关闭连接,当你想投票.

原文地址:https://www.jb51.cc/html5/168748.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。