WebSocket实时通信
实现WebSocket实时功能
提示词
请实现实时通信功能:
场景:[聊天室/实时通知/协作编辑/在线游戏]
技术栈:[Socket.IO/WebSocket原生]
功能:
1. 连接/断开管理
2. 房间/频道
3. 消息广播
4. 在线状态
5. 消息历史
6. 断线重连
7. 认证
给出服务端和客户端代码。示例输出
服务端(Socket.IO):
const io = new Server(server, { cors: { origin: '*' } });
io.use((socket, next) => {
const token = socket.handshake.auth.token;
jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
if (err) return next(new Error('认证失败'));
socket.userId = decoded.sub;
next();
});
});
io.on('connection', (socket) => {
socket.join(`user:${socket.userId}`);
socket.on('join-room', (roomId) => {
socket.join(roomId);
io.to(roomId).emit('user-joined', { userId: socket.userId });
});
socket.on('send-message', ({ roomId, content }) => {
io.to(roomId).emit('new-message', {
userId: socket.userId,
content,
timestamp: new Date()
});
});
});客户端:
const socket = io('/', { auth: { token: localStorage.token } });
socket.emit('join-room', 'room-123');
socket.on('new-message', (msg) => appendMessage(msg));评论 0
更多
登录后可点赞、收藏、评论和举报。
还没有评论,先发起一个具体问题。