其余技术---- 服务端推送SSE

SSE是Server-sent Events的简称,它是HTML5中的一种规范。目前为止那些老旧的浏览器是不直接支持SSE规范的,好比IE内核的浏览器。
咱们知道websocket能够实现客户端与服务端的双向通讯。SSE这个东西是能够实现服务端主动向客户端进行通讯的,可是它仅仅是单向的。若是客户端与服务器端的数据交互不是特别频繁,那么咱们是能够使用SSE技术来实现的。前端

协议

Server-sent Events主要由两部分组成。git

1.服务器端与浏览器端之间的通信协议
2.前端js对象EventSourcegithub

服务端若要向前端发送一个SSE,响应的类型应该为"text/event-stream",响应文本的内容是一个事件流,固然仍是文本类型,这个看响应类型就知道。
每一个事件由类型和数据组成,同时每一个事件都有一个标识符(键值对的形式),不一样事件经过车符和换行符的空行(“\r\n”)来分隔。好比:web

data: eve1 event
 
data: eve2 event
id: 0
 
event: eve
data: eve3 event
id: 1

含义:浏览器

  • data: 数据
  • event: 事件的类型
  • id: 事件的标识符
  • retry: 浏览器在链接断开以后进行再次链接以前的等待时间服务器

    使用

  1. 咱们使用sse编写一个push接口,用于返回SseEmitter对象,这样前端接口请求的响应头则会是text/event-stream
  2. SseEmitter对象真正响应给前端的事件是由SseEmitter对象的send方法来实现的(调用SseEmitter的send方法将响应给前端一个事件流)
  3. 封装send的SseEmitter属性(事件内容)

代码详情见github
https://github.com/yusonghu/ssewebsocket

相关文章
相关标签/搜索