JavaScript中SSE(Server-Sent Events)的介绍和使用

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

- --------
- ------------
- ------------
- ------------
- ------------
- ----------------

-
-
----
- - - -

	------- - -- -------- - ----
	- - ----
		- ------- - - ----
		- ---- - -
			--
				-----
					- - - -
					----------------------
					- -
					---------------------------
					- -
					-------
				-
			---- ---
				-------------
			-
		-------
		- --------
	-

-