• SSE推送数据


    SSE(Server-Sent Event,服务端推送事件)是一种允许服务端向客户端推送新数据的HTML5技术。与由客户端每隔几秒从服务端轮询拉取新数据相比,这是一种更优的解决方案。

    WebSocket和SSE的浏览器支持率差不多,与之相比SSE胜在服务端的简洁,WebSocket则很复杂,不借助辅助类库基本搞不定,SSE能在现有的HTTP/HTTPS协议上运作,所以它能直接运行于现有的代理服务器和认证技术。而对WebSocket而言,代理服务器需要做一些开发(或其他工作)才能支持。

    不过,这就引出了WebSocket相较SSE的一个潜在优势:WebSocket是二进制协议,而SSE是文本协议(通常使用UTF-8编码)。当然,我们可以通过SSE连接传输二进制数据:在SSE中,只有两个具有特殊意义的字符,它们是CR和LF,而对它们进行转码并不难。但用SSE传输二进制数据时数据会变大,如果需要从服务端到客户端传输大量的二进制数据,最好还是用WebSocket。

    WebSocket相较SSE最大的优势在于它是双向交流的,这意味向服务端发送数据就像从服务端接收数据一样简单。用SSE时,一般通过一个独立的Ajax请求从客户端向服务端传送数据。相对于WebSocket,这样使用Ajax会增加开销,但也就多一点点而已。如此一来,问题就变成了“什么时候需要关心这个差异?”如果需要以1次/秒或者更快的频率向服务端传输数据,那应该用WebSocket。0.2次/秒到1次/秒的频率是一个灰色地带,用WebSocket和用SSE差别不大;但如果你期望重负载,那就有必要确定基准点。频率低于0.2次/秒左右时,两者差别不大。请求频率高用WebSocket,频率低用SSE

    MDN使用服务器发送事件:https://developer.mozilla.org/zh-CN/docs/Server-sent_events/Using_server-sent_events

    MDNEventSource:https://developer.mozilla.org/zh-CN/docs/Server-sent_events/EventSource

  • 相关阅读:
    基于android混合开发的JsBridge技术学习
    使用centos引导内核错误:kernel: pnp 00:0b: can't evaluate _CRS: 8
    mysql的错误:The server quit without updating PID file /usr/local/mysql/data/door.pid).
    关于新的man版本出现“无法解析 /usr/share/man/zh_CN/man1/ls.1.gz: 没有那个文件或目录“
    使用struts2标签<s:action无法显示引用页面问题
    cookie 跨域的问题
    mysql8.0 在window环境下的部署与配置
    webconfig的配置解析
    C#.net 创建XML
    HashMap和HashTable的区别
  • 原文地址:https://www.cnblogs.com/ziqian9206/p/7234624.html
Copyright © 2020-2023  润新知