在前端开发中,实时推送在线数据是一个常见的需求。例如,在在线聊天应用程序中,用户需要看到实时发送和接收的消息;在股票交易应用程序中,用户需要看到实时更新的股票价格。为了实现这些实时推送功能,我们可以使用 Server-Sent Events(SSE)技术。
什么是 SSE?
SSE 是一种基于 HTTP 的服务器推送技术,它允许服务器向客户端发送实时数据。与 WebSocket 不同,SSE 是单向的,只能由服务器向客户端发送数据。SSE 使用纯文本格式(text/event-stream)发送数据,可以发送任何类型的数据,包括 JSON、XML、HTML 等。
如何使用 SSE?
使用 SSE 实现实时推送在线数据需要以下步骤:
1. 创建一个 SSE 连接
在客户端,我们需要创建一个 SSE 连接,以便从服务器接收数据。我们可以使用 JavaScript 中的 EventSource 对象创建 SSE 连接。例如:
const source = new EventSource('/sse');
上面的代码创建了一个 SSE 连接,它将从服务器的 /sse 路径接收数据。
2. 服务器端发送数据
在服务器端,我们需要向 SSE 连接发送数据。我们可以使用以下代码发送数据:
response.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); response.write('data: ' + JSON.stringify({ message: 'Hello, world!' }) + '\n\n');
上面的代码将发送一个 JSON 对象,其中包含一条消息。注意,我们需要设置正确的 Content-Type、Cache-Control 和 Connection 头信息,以确保 SSE 连接能够正常工作。
3. 处理接收到的数据
在客户端,我们需要处理接收到的数据。我们可以使用以下代码处理数据:
source.addEventListener('message', function(event) { const data = JSON.parse(event.data); console.log(data.message); });
上面的代码将在收到消息时打印消息内容。
示例代码
以下是一个完整的 SSE 示例代码,它将从服务器接收实时数据并在页面上显示:
-- -------------------- ---- ------- --------- ----- ------ ------ ----- ---------------- ---------- --------------- ------- ------ --- ------------------- -------- ----- ------ - --- -------------------- ----- -------- - ------------------------------------ ---------------------------------- --------------- - ----- ---- - ----------------------- ----- -- - ----------------------------- -------------- - ------------- ------------------------- --- --------- ------- -------
服务器端代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----------------------------------- --------- - -- ------------ --- ------- - ----------------------- - --------------- -------------------- ---------------- ----------- ------------- ------------ --- ---------------------- - ----- ---- - - -------- ------- ------- -- --------------------- - - -------------------- - -------- -- ------ - ----------------
上面的代码将每秒发送一条消息到 SSE 连接中。
总结
SSE 技术可以帮助我们实现实时推送在线数据的功能。使用 SSE 需要在客户端创建 SSE 连接并在服务器端发送数据。SSE 技术比 WebSocket 更加简单,适用于一些简单的实时推送场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6506f50995b1f8cacd28c364