AsyncResponse就像一个等待时间长的ajax轮询。客户端启动单个AJAX请求来检查更新,直到它接收到数据或发生超时并触发另一个请求才会返回。它确实创建了不必要的检查循环(在服务器端),负载等同于连接的客户端数量。更多的客户端,更多的循环启动=需要更多资源。
服务器发送的事件有点类似于服务器端的长轮询,都使用循环来检查更新并触发响应。唯一的区别是长轮询会连续发送请求(在超时或接收数据后),而SSE只需要发起一次。因此,当考虑电池使用时,SSE更适合移动应用。
Websocket也使用循环,但不仅用于检查更新;也可以在握手后监听新连接并升级到WS/WSS的连接。与长轮询和上证所不同,负载随着客户端数量的增加而增加,websocket像守护进程一样不停地运行循环。除了常量循环之外,随着更多客户端连接到套接字,负载也会增加。例如,如果您正在设计一个用于管理目的的Web服务,那么在长时间轮询和SSE上运行的服务器可以在办公时间后无人休息时休息,而websocket将继续运行,等待连接。我提到没有适当的身份验证,任何人都可以创建一个客户端并连接到您的websocket?大多数情况下,认证和拒绝连接不是在握手部分完成的,而是在连接完成后完成的。
我应该继续如何在多个选项卡上实现websocket?