答案 0 :(得分:3)
当服务器需要向客户端提供有关服务器上发生的某些事件的实时信息时,WebSockets非常有用。这可以避免客户端进行多次轮询AJAX调用,以验证服务器上是否发生了某些事件。
想一个简单的聊天应用程序。如果客户端需要知道聊天会话中的其他参与者是否已经编写了某些东西以便显示它,他将需要定期进行AJAX调用以在服务器上验证这一点。另一方面,WebSockets允许服务器在发生这种情况时通知客户端,因此在网络流量方面效率更高。此外,WebSockets协议允许服务器同时将实时信息推送到多个订阅的客户端:例如,您可以使用Web浏览器和移动应用程序订阅WebSocket并直接通过服务器相互通信。使用AJAX这种场景将更难实现,并且需要更多的无状态HTTP调用。
据我所知,会话cookie将在每次http请求期间在客户端和服务器之间发送,这种情况在使用套接字的客户端< =>服务器交互期间是相同的
WebSockets协议与HTTP协议不同。因此,在初始握手发生后(通过HTTP发生),没有更多关于HTTP特定事物的概念,例如cookie。
使用WebSockets时应注意一件重要的事情:它需要在客户端和服务器之间建立持久连接。当您需要对服务器进行负载平衡时,这可能会变得棘手。当然,WebSockets协议的不同实现可能会提供此问题的解决方案。例如Socket.IO has a Redis
实现允许服务器通过节点集群跟踪连接的客户端。