繁体   English   中英

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

[英]Server Side Events + Client Side Events vs Websocket

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

谢谢

这是上交所及其灵活性的最好解释

服务器发送的事件与WebSockets

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

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

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

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

我发现的唯一问题是缺乏跨浏览器的支持。如果您想进一步了解sse,请具体询问您想要什么

浏览器支持列表

由于您的使用主要是服务器向客户端推送,因此我建议将服务器已发送事件组合起来,用于从服务器向客户端推送,以及将AJAX用于其他方式。

您绝对应该阅读本文以做出决定:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM