WebSockets和Server-Sent Events两者都可以对浏览器推送数据。据我而知,两者好似是相互竞争的技术。我如何区分两者之间的不同之处?开发中,你会选择使用哪一种?
原问题:WebSockets vs. Server-Sent events/EventSource
PHP中文网2017-04-17 11:08:10
最佳答案
Alex Recarey:
Websockets和SSE(Server Sent Events)都可以对浏览器传输数据,但两种技术并非是竞争关系。
Websocket既可以给浏览器发送数据,还可以从浏览器端接收数据,比如利用Websockets开发的聊天应用就是一个具有代表性的实例。
而SSE只能上传数据到浏览器,比如在线股票行情、twitter feed updating,这些产品的功能就是如此。
在实践中,Websockets更受关注和喜爱,浏览器支持方面也略比SSE占据优势。
但SSE协议可以更轻松的实现后台操作,还可以在不支持它本身的老版浏览器上使用JavaScript,一些实现实例可以在Modernizr Github页面上查询到。HTML5Rocks曾针对两者做过对比,截取文章片段:
总结
SSE超过Websockets的优点:
运行HTTP协议,而不是自定义协议
能够poly-filled JavaScript反相移植不兼容SSE的浏览器
内置支持重新连接和事件识别符
相当简单的协议
Websockets超过SSE的优点:
实时传输,双方向通信
浏览器支持率较高