HTML5服务器端事件:EventSource vs. wrapped WebSocket
HTML5 Server-Side Event: EventSource vs. wrapped WebSocket
是HTML5服务器发送事件(SSE) API只是一个受限制的,基于事件的API在HTML5 WebSockets?
在我看来,一个EventSource
只是一个WebSocket
,
- 无法获取
.send()
数据 - 使用
text/event-stream
格式 - 触发动态命名的(服务器定义的)事件而不是
onmessage
web服务器将事件推送到客户端设备的想法非常有趣。这个API有什么吸引力吗?
我想象异步事件模型在与Node结合时会工作得很漂亮,但在我的ASP中没有看到很多用例。净的世界。
Server Sent Events在只需要服务器推送的应用程序中很有用,而Web Sockets则适用于需要双向快速通信的应用程序。
服务器发送事件是一个很好的解决方案的例子是:
- 股票价值变化
- 新闻提要
Server Sent Events做了一些Web Sockets中没有内置的事情,比如自动重连和eventIDs。
服务器发送事件也有更广泛的浏览器支持,到今天为止,支持Safari(只支持旧版本的web Sockets)和Opera(默认禁用web Sockets,并使用旧版本)。
阅读更多关于服务器发送事件的流更新。
除了Jonas所说的,协议完全不同。
-
The WebSocket Protocol
(RFC 6455)以HTTP连接开始,然后使用握手将连接升级到新协议。这是一个二进制协议,使用帧、消息类型等。 -
Server-Sent Events
是一个长时间运行的HTTP请求,保持打开状态。服务器以简单的基于文本的格式(UTF-8
编码)发送消息,用'n'n
分隔。消息有字段event
(事件类型),data
,id
,并且可以选择包含注释。
一个主要的区别是安全模型。使用WebSockets,默认是允许任何人连接。拒绝连接必须在服务器端完成,基于Origin
头。
SSE更接近HTTP并使用同源策略。默认情况下,您只能向相同的主机和端口发出请求。将来可以使用CORS发出跨域SSE请求。到目前为止,浏览器还没有实现这个功能。
- setInteval vs setTimeout
- $(this).prop('property') vs. this.property
- Js.erb VS按钮标记-不'不起作用.为什么?
- reactjs this.refs vs document.getElementById
- Performance: NaCl vs Emscripten
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- Advantages to DOMParser vs template & innerHTML
- JavaScript-===vs===运算符性能
- 开发第三方小部件-Angular vs jQuery vs普通的旧JS
- PhantomJS(vs nightwatch.js)设置cookie错误
- Javascript events: window.event vs argument reference (funct
- 需要确认我对Servlet vs RESTful网页的理解's的差异
- "#"keyCode=222 vs 51(Chrome与Android版Chrome)-为什么有区别
- .notion vs.[]notation |插入到文本对象中
- Javascript-使用“”将toDateStringMonth从文本字符串解析为数字字符串;如果“;vs“;开关”;
- 没有框架/DLL的VS Web应用程序项目
- Eval vs execscript
- VS代码:在<脚本>标签
- Object.prototype.hasOwnProperty.call() vs Object.prototype.h
- HTML5服务器端事件:EventSource vs. wrapped WebSocket