gpt4 book ai didi

html - 服务器端的服务器发送事件成本

转载 作者:技术小花猫 更新时间:2023-10-29 12:01:08 25 4
gpt4 key购买 nike

如果我正确理解服务器发送事件的原则,每次客户端注册到事件源时,它实际上会打开一个新的 HTTP 连接到管理事件的资源。与其他 HTTP 请求相反,连接保持事件状态,因此专用于此客户端的服务器进程/线程一直运行,直到客户端断开连接。

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

最佳答案

是的,每个客户端都会尽可能长时间地保持连接打开。对于 1000 个并发用户,您将打开 1000 个 TCP/IP 连接。

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

Apache 通常为每个连接保持一个线程运行,因此它非常昂贵。对于 Apache,最好禁用 KeepAlive 并使用轮询。

OTOH 使用像 node.js 这样的基于事件的服务器,你可以只有一个进程来管理所有连接,因此每个连接的成本要低得多,你应该能够轻松地保持数千个连接打开。

SSE 的妙处在于您还可以使用它进行轮询。它有 retry: 指令,指定客户端在再次重新连接(轮询)之前应该等待多长时间。只需在需要轮询时发送并关闭连接即可。

关于html - 服务器端的服务器发送事件成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com