简介
ngx-sse 是一款基于 Nginx 的 SSE(Server-Sent Events)服务,使用它可以实现基于 HTTP 的实时通信。它的特点是可以在不需要任何插件的情况下,在服务器和客户端之间建立一个持久连接(长连接),从而实现服务器主动向客户端发送消息。对于前端开发中实时通信的场景,ngx-sse 是一个非常不错的选择。
安装
ngx-sse 的安装及配置比较简单,只需要在 Nginx 的编译选项中加入 --with-http_sse_module 参数即可。
./configure --with-http_sse_module make make install
使用
ngx-sse 的使用也比较简单,首先需要在 Nginx 配置文件中添加下列代码:
-- -------------------- ---- -------
-------- ---- -
- ----
--------------- ----
- ------
---------- -------------------
- -----
---------- ------------ ------------------
- --------
---------------- ---------- ---
- ----
------------------ -------------
---------------------- ---
------- ----
-然后,在后端服务器中可以使用 SSE 库向客户端发送消息:
-- -------------------- ---- -------
--- --- - ---------------
--- ------ - -------------------------- ----- ---- -
-- -------- --- ------- -
--- ------ - -------- -----
-------------------- -- -
--------------- -----------------------------
-- ------
-
---最后,在前端中可以使用如下代码接收到从后端发送过来的消息:
var source = new EventSource('/sse');
source.onmessage = function (event) {
console.log(event.data);
};示例代码
为了更好地理解 ngx-sse 的使用,这里给出一个完整的示例代码。在这个例子中,我们会向客户端发送当前服务器时间:
后端代码
-- -------------------- ---- -------
--- ---- - ----------------
--- --- - ---------------
--- ------ - -------------------------- ----- ---- -
-- -------- --- ------- -
--- ------ - -------- -----
-------------------- -- -
--------------- -----------------------------
-- ------
-
---
------------------- -------- -- -
------------------- -- --------- -- ------------------------
---前端代码
-- -------------------- ---- -------
--------- -----
----- ----------
------
----- ----------------
-------------- ------------
-------
------
-----------------
---- ------------------
--------
--- ------ - ----------------------------------
--- ------ - --- --------------------
---------------- - -------- ------- -
---------------- - -----------
--
---------
-------
-------总结
ngx-sse 是一款非常方便易用的实时通信工具,它可以帮助我们快速实现服务器端向客户端发送消息的功能。在具体应用中,它不但可用于实时消息推送,也可用于长轮询等场景。因此,掌握和使用 ngx-sse 对于前端开发人员来说是非常有益的。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/665084ced3423812e43146ab