zoukankan      html  css  js  c++  java
  • 其他技术---- 服务端推送SSE

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

    协议

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

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

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

    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/sse

  • 相关阅读:
    【转】进程与线程的一个简单解释
    折半查找
    BOJ 89 统计时间间隔
    BOJ 88 最值问题
    BOJ 87 日期
    QT杂记(网上资料整理而成)
    我的博客园
    【制作镜像】virsh
    【培训】MySQL
    ERROR 1045 (28000): Access denied for user 'root'@'localhost'
  • 原文地址:https://www.cnblogs.com/bananafish/p/11632022.html
Copyright © 2011-2022 走看看