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

评论 0

更多

登录后可点赞、收藏、评论和举报。

还没有评论,先发起一个具体问题。