js消息实现
使用 WebSocket 实现实时消息通信
WebSocket 是一种全双工通信协议,适合实时消息场景。以下是一个简单的实现示例:
客户端代码(浏览器端)
const socket = new WebSocket('ws://your-server-address');
socket.onopen = () => {
console.log('连接已建立');
socket.send('Hello Server!');
};
socket.onmessage = (event) => {
console.log('收到消息:', event.data);
};
socket.onclose = () => {
console.log('连接关闭');
};
服务端代码(Node.js + ws 库)
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
ws.on('message', (message) => {
console.log('收到客户端消息:', message.toString());
ws.send('Server Response');
});
});
使用 EventSource 实现服务器推送(SSE)
SSE 适用于单向服务器推送场景,兼容性良好。
客户端代码
const eventSource = new EventSource('/sse-endpoint');
eventSource.onmessage = (event) => {
console.log('收到推送:', event.data);
};
eventSource.onerror = () => {
console.error('连接异常');
};
服务端代码(Node.js + Express)
const express = require('express');
const app = express();
app.get('/sse-endpoint', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
setInterval(() => {
res.write(`data: ${new Date().toISOString()}\n\n`);
}, 1000);
});
app.listen(3000);
使用第三方库(如 Socket.IO)
Socket.IO 封装了 WebSocket 并提供了降级兼容方案。
客户端代码
const socket = io('http://your-server-address');
socket.emit('chat', { text: 'Hello' });
socket.on('reply', (data) => {
console.log('回复:', data);
});
服务端代码
const io = require('socket.io')(3000);
io.on('connection', (socket) => {
socket.on('chat', (data) => {
socket.emit('reply', { text: 'Received' });
});
});
使用 HTTP 轮询(兼容旧浏览器)
通过定时请求实现简单消息拉取。
客户端代码
function pollMessages() {
fetch('/poll-endpoint')
.then(response => response.json())
.then(data => {
console.log('新消息:', data);
setTimeout(pollMessages, 5000);
});
}
pollMessages();
服务端代码

app.get('/poll-endpoint', (req, res) => {
res.json({ message: 'Latest update' });
});






