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

时间:2016-05-13 00:34:04

标签: javascript jquery sockets

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

谢谢

2 个答案:

答案 0 :(得分:3)

This is the best explanation for SSE and its flexibilty

服务器发送事件与WebSockets

为什么要通过WebSockets选择服务器发送的事件?好问题。

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

SSE通过传统HTTP发送。这意味着他们不需要特殊的协议或服务器实现来实现工作。另一方面,WebSockets需要全双工连接和新的Web Socket服务器来处理协议。此外,Server-Sent Events具有WebSockets设计缺乏的各种功能,例如自动重新连接,事件ID以及发送任意事件的能力。

我已经为我的网站使用sse和ajax构建了一个聊天应用程序。如果只有流更新,从客户端到服务器的更新很少,我建议sse + ajax可以使用ajax部分

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

Browser Support List

答案 1 :(得分:1)

由于您的使用主要是服务器推送到客户端,我建议将服务器发送事件的组合用于从服务器到客户端的推送以及用于相反的方式的AJAX。

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

http://streamdata.io/blog/push-sse-vs-websockets/

这将为您提供使用Server-Sent事件与WebSocket的优缺点。

相关问题