Javascript 服务器端事件+;客户端事件与Websocket

Javascript 服务器端事件+;客户端事件与Websocket,javascript,jquery,sockets,Javascript,Jquery,Sockets,我正在更新一个使用ajax轮询机制的旧系统。脚本会定期调用后端以查找更新,用户很少会发出ajax请求来发送数据。我首先想使用Web套接字,因为我可以立即从推送事件中获取数据,并且连接保持打开状态。然后我阅读了服务器端事件,以及它是如何单向的。这正好符合我的需要,因为浏览器正在等待事件。但是,很少有用户可以发送数据的情况。是否有服务器端事件的替代方案,我可以保持连接打开以将数据发送回服务器?使用SSE+AJAX、SSE+(替代方法)还是仅仅使用web套接字(即使数据很少发送回服务器)更好 谢谢因为

我正在更新一个使用ajax轮询机制的旧系统。脚本会定期调用后端以查找更新,用户很少会发出ajax请求来发送数据。我首先想使用Web套接字,因为我可以立即从推送事件中获取数据,并且连接保持打开状态。然后我阅读了服务器端事件,以及它是如何单向的。这正好符合我的需要,因为浏览器正在等待事件。但是,很少有用户可以发送数据的情况。是否有服务器端事件的替代方案,我可以保持连接打开以将数据发送回服务器?使用SSE+AJAX、SSE+(替代方法)还是仅仅使用web套接字(即使数据很少发送回服务器)更好


谢谢

因为您的使用主要是服务器推送到客户端,所以我建议将服务器发送的事件与AJAX相结合,用于从服务器推送到客户端,反之亦然

你一定要阅读这篇文章才能做出决定:


这将为您提供使用服务器发送事件与使用WebSocket的优缺点。

由于您使用的主要是服务器推送到客户端,我建议将服务器发送事件与服务器到客户端的推送相结合,反之则使用AJAX

你一定要阅读这篇文章才能做出决定:

这将告诉您使用服务器发送的事件与WebSocket的优缺点。

服务器发送事件与WebSocket 为什么选择服务器发送的事件而不是WebSocket?好问题。

SSE一直处于阴影中的一个原因是,后来的API(如WebSocket)提供了更丰富的协议来执行双向全双工通信。对于游戏、消息传递应用程序以及需要在两个方向上进行近实时更新的情况,双向通道更具吸引力。但是,在某些情况下,不需要从客户端发送数据。您只需要从某些服务器操作中进行更新。例如,朋友的状态更新、股票行情、新闻提要或其他自动数据推送机制(例如,更新客户端Web SQL数据库或IndexedDB对象存储)。如果需要向服务器发送数据,XMLHttpRequest始终是您的朋友

SSE通过传统HTTP发送。这意味着它们不需要特殊的协议或服务器实现就可以工作。另一方面,WebSocket需要全双工连接和新的Web套接字服务器来处理协议。此外,服务器发送的事件具有WebSocket设计上缺乏的各种功能,如自动重新连接、事件ID和发送任意事件的能力

我已经为我的站点构建了一个使用sse和ajax的聊天应用程序。我建议,如果只有流更新,并且从客户端到服务器的更新很少,那么sse+ajax将是一个不错的选择,您可以使用ajax部分

我发现的唯一问题是它缺乏跨浏览器的支持。如果你想更深入地了解sse,请明确询问你想要什么

服务器发送事件与WebSocket 为什么选择服务器发送的事件而不是WebSocket?好问题。

SSE一直处于阴影中的一个原因是,后来的API(如WebSocket)提供了更丰富的协议来执行双向全双工通信。对于游戏、消息传递应用程序以及需要在两个方向上进行近实时更新的情况,双向通道更具吸引力。但是,在某些情况下,不需要从客户端发送数据。您只需要从某些服务器操作中进行更新。例如,朋友的状态更新、股票行情、新闻提要或其他自动数据推送机制(例如,更新客户端Web SQL数据库或IndexedDB对象存储)。如果需要向服务器发送数据,XMLHttpRequest始终是您的朋友

SSE通过传统HTTP发送。这意味着它们不需要特殊的协议或服务器实现就可以工作。另一方面,WebSocket需要全双工连接和新的Web套接字服务器来处理协议。此外,服务器发送的事件具有WebSocket设计上缺乏的各种功能,如自动重新连接、事件ID和发送任意事件的能力

我已经为我的站点构建了一个使用sse和ajax的聊天应用程序。我建议,如果只有流更新,并且从客户端到服务器的更新很少,那么sse+ajax将是一个不错的选择,您可以使用ajax部分

我发现的唯一问题是它缺乏跨浏览器的支持。如果你想更深入地了解sse,请明确询问你想要什么


与服务器对话不需要打开连接,ajax会按需中断。我以为ajax打开了HTTP连接?确实如此。你最多可以有4台服务器,在更新的浏览器中有8台……可能是重复的,你不需要打开连接就可以与服务器通信,ajax会按需中断。我以为ajax打开了HTTP连接?确实如此。你可以在任何服务器上安装多达4个,在更新的浏览器中安装8个……可能与我以前读过的那篇文章有重复之处,而且非常好。我希望得到一些“大师”的答案;)。我以前读过那篇文章,很不错。我希望得到一些“大师”的答案;)。