使用Socket.io时如何获取断开连接的客户端信息

我使用node创建了一个服务器,与客户端通过Socket.io进行连接,构造了一个在线聊天室,当某个用户连接进来的时候向服务器发送一条消息,告知服务器某用户进入了聊天室,但是我要如何在某个客户端断开连接时,让服务器准确地知道是谁断开了连接?

客户端

    var socket = io.connect();
    socket.emit('new user','用户名');

服务端监听部分

  io.on('connection',function(socket) {

    socket.on('new user',function(name){
      console.log(name + '进入了聊天室');
    })

    socket.on('chat Msg',function(data){
      io.emit('chat Msg',data);
    });

    socket.on('disconnect',function(){
      console.log('???离开了聊天室');
      //这里如何获得准确地用户名?目前只能知道某个用户断开了连接
    })
    
  })
阅读 8.8k
1 个回答

socket.io一样可以加cookie或者session信息的。

以socket.io和express为例

// 设置socket的session验证
io.use(function (socket, next) {
  if (socket.request.headers.cookie) {
    socket.request.cookies = cookie.parse(socket.request.headers.cookie);
    next();
  } else {
    return next(new Error('Missing cookie headers'));
  }
});

// 建立链接
io.on('connection', function (socket) {

  // 记录socket
  if (socket.request.cookies) {
    var sid = socket.request.cookies._sid;
    console.log(sid);
  }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题