SSE 请求头规范
请求头:开启长链接 + 流方式传递,必须是 UTF-8 编码的文本,这是硬性要求。
------------- -------------------------
-------------- --------
----------- ----------
SSE 数据格式规范
-------- ---------
field - 冒号(:):冒号开头的行,表示注释。通常用户呼吸作用,服务端每隔一段时间就会向浏览器发送注释,保持连接不中断。
- -------------
field - data:标识数据内容。如果数据很长,可以分成多行,最后一行用 \n\n 结尾,前面行都用 \n 结尾。
----- -----------
- -
----- ------- -------
----- - ------- -------
field - id:数据标识符。每条数据的一个编码号。
--- -----
----- -----------
field - event:触发的消息的方法名。一般用于指定自定义的事件类型,默认是 message 事件。
------ ------
----- - - ---------
客户端实现
创建实例:先要检测浏览器是否支持 SSE。
--- - ---
- - - - ------ --- ----
-
监听连接:连接一旦建立,就会触发 open 事件。
--- - -----
------ -------
-
监听消息:服务器发来的数据,默认就会触发 message事件。
--- - -----
------ -------
-
监听错误:一般连接超时,或服务端异常时触发 error 事件。
--- - -----
------ -------
-
关闭连接:不再需要服务端推送的时候,可关闭连接。
-----------
自定义事件:如果服务端发送的是自定义事件,就不会触发 message 事件。可用自定义事件区分处理不同的业务逻辑。
------ - --- -
------ -------
-- ---
完成代码
--- - ---
- - - - ------ --- ----
--- - -----
------ -------
-
--- - -----
------ -------
-
--- - -----
------ -------
-
------ - --- -
------ -------
-- ---
-
服务端实现
NodeJS
- ---- - -----
---------- -- - -
- -
-------- -
-- --
-- --
-- --
-- -
---
- - - -
-------- ----
- -
-------- ----
-------- ----
- -
- -------- - ----- -
------- - - -- ---- - ---
-- ---
- - - -
---------- --- -
------------
-- ---
------- ---
java - SpringBoot
- --------
- ------------
- ------------
- ------------
- ------------
- --------
-
-
----
- - - -
----
- - --- --------- -
--------------
--------------
- ---- - - -
- -
- --- -
- - - -
---------------- ---
- -
---------------- ---
---------------- ---
- -
-------
-
- - -- -- -
------
-
-------
-
-
Java - SpringBoot - SseEmitter
- --------
- ------------
- ------------
- ------------
- ------------
- ----------------
-
-
----
- - - -
------- - -- -------- - ----
- - ----
- ------- - - ----
- ---- - -
--
-----
- - - -
----------------------
- -
---------------------------
- -
-------
-
---- ---
-------------
-
-------
- --------
-
-