前期回顾
目录
仓库点我👉及时推送到客户端消息
@CSDN 彩色之外
📝 前言
Server-Sent Events (SSE) 是什么?
Server-Sent Events (SSE) 是一种允许服务器主动向客户端发送更新的技术。与 WebSocket 不同,SSE 是单向通信,仅从服务器到客户端。这对于实时更新场景(如股票价格更新、新闻订阅、天气推送、每日笑话等)非常有用,而且实现起来比 WebSocket 简单。
这个项目演示了如何使用 Server-Sent Events (SSE) 实现从服务器到客户端的实时数据流。它包括一个简单的 Node.js 服务器,使用 Express 框架设置 SSE 端点,以及一个 HTML 页面,通过 EventSource 接口接收来自服务器的消息。
服务器每秒像客户端发送一次服务端生成的时间
index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>EventSource 示例</title>
</head>
<body>
<h2>服务器发送的消息:</h2>
<ul id="messages"></ul>
<script>
// 创建一个指向你的服务器端点的 EventSource 实例
var eventSource = new EventSource('http://localhost:3000/events');
// 使用 onmessage 事件监听器来接收消息
eventSource.onmessage = function (event) {
// 获取消息列表的元素
var messagesElement = document.getElementById('messages');
// 创建一个新的列表项元素,并设置其内容为接收到的消息
var messageElement = document.createElement('li');
messageElement.textContent = event.data;
// 将新的列表项添加到消息列表中
messagesElement.appendChild(messageElement);
};
// 监听错误事件
eventSource.onerror = function (error) {
console.error('EventSource failed:', error);
// 在出现错误时关闭 EventSource
eventSource.close();
};
</script>
</body>
</html>
server.js
const express = require("express");
const cors = require("cors");
const app = express();
const PORT = 3000;
// 设置根URL的GET路由
app.get("/", (req, res) => {
res.send(
`<b>Hello, World!</b> - <br>使用 VS Code 的 Five Server<br> 1. 在 VS Code 中安装 Five Server 扩展。<br> 2. 与 Live Server 类似,重启 VS Code,打开你的项目文件夹。<br> 3. 找到你的 HTML 文件,右键点击并选择“Open with Five Server”。`
);
});
// 允许跨域请求
app.use(cors());
app.get("/events", (req, res) => {
res.setHeader("Content-Type", "text/event-stream");
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Connection", "keep-alive");
// 发送消息到客户端
const sendMessage = () => {
const data = `服务器时间: ${new Date()}`;
res.write(`data: ${data}\n\n`);
// 每秒发送一次
setTimeout(sendMessage, 1000);
};
sendMessage();
});
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});
🛠️ 安装
npm install express cors
✂️ 运行服务器
node server.js
> 在项目目录中,运行以上命令来启动服务器:
> 你将看到控制台输出,表明服务器已经在 http://localhost:3000 上运行。
✂️ 运行index.html
使用 VS Code 的 Five Server
1. 在 VS Code 中安装 Five Server 扩展。
2. 与 Live Server 类似,重启 VS Code,打开你的项目文件夹。
3. 找到你的 HTML 文件,右键点击并选择“Open with Five Server”。
功能描述
> 服务器 (server.js): 设置一个 SSE 端点 /events,每秒向客户端发送当前时间。
> 客户端 (index.html): 使用 EventSource 接口连接到 SSE 端点,并在页面上显示接收到的消息。
技术栈
> Node.js: 服务器环境。
> Express: Node.js 的 web 应用框架,用于设置 SSE 端点。
> CORS: 用于解决跨域请求的问题。
> HTML/JavaScript: 客户端页面和逻辑。
♻️ 贡献
如果你有任何改进的建议或想要贡献代码,请随时创建 pull 请求或提交问题。