HTML5 服务器发送事件(Server-Sent Events)使用详解
SSE 是一种 HTML5 API,它允许服务器向客户端推送数据,而不需要客户端不断地发起请求。换句话说,它实现了服务器到客户端的实时通信。
const source = new EventSource('sse_endpoint');
sse_endpoint
: 服务器端提供 SSE 服务的 URL。
source.onmessage = (event) => {
console.log(event.data); // 处理接收到的数据
};
source.onerror = (event) => {
console.error('EventSource error:', event);
};
onmessage
: 接收服务器发送的数据。onerror
: 处理错误事件。
Content-Type: text/event-stream
data: hello world\n\n
data
: 数据字段,表示要发送的数据。\n\n
: 两个换行符表示数据结束。完整示例(Node.js):
JavaScript
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {
'Content-Type': 'text/event-stream'
});
setInterval(() => {
const data = `data: ${new Date().toISOString()}\n\n`;
res.write(data);
}, 2000);
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
<!DOCTYPE html>
<html>
<head>
<title>SSE Example</title>
</head>
<body>
<div id="result"></div>
<script>
const source = new EventSource('http://localhost:3000');
source.onmessage = (event) => {
document.getElementById('result').textContent = event.data;
};
</script>
</body>
</html>
event: my-custom-event\n
data: some data\n\n
onerror
事件处理各种错误,例如网络错误、服务器错误等。SSE 是一种简单高效的实现服务器到客户端实时通信的技术。它在实时数据推送场景下有广泛的应用,例如股票行情、聊天室、实时监控等。
注意:
更多深入学习,可以参考 MDN Web Docs: https://developer.mozilla.org/zh-CN/docs/Web/API/Server-sent_events
如果您还有其他问题,欢迎随时提出。