【问题标题】:Socket.io socket.handshake undefined on disconnect断开连接时未定义 Socket.io socket.handshake
【发布时间】:2020-04-01 05:05:31
【问题描述】:

我有一个带有 socket.io 的 NodeJS 服务器,并设置它来监听 disconnect 事件:

io.on('connection', function(socket) {
    console.log(socket.handshake); // this works
    console.log(socket.handshake.cookie);

  socket.on('disconnect', function(socket) {
    console.log(socket.handshake); // this does not
    console.log(socket.handshake.cookie);

  });
});

在这种情况下,'disconnect' 事件 socket.handshake 返回未定义,因此导致 TypeError: Cannot read property... 等。connection 事件按预期记录所有内容。这是因为没有在断开连接时传递标头,如果是这样, 传递了什么信息?

本质上,我的问题是:

  1. 'disconnect' 事件中的第二对socket.handshake 怎么会返回undefined
  2. 如果这是由disconnect 事件socket 发送不同的数据引起的, 发送了什么数据?
  3. 有没有办法从'disconnect' 事件中获取cookie?

谢谢!

【问题讨论】:

    标签: javascript node.js sockets socket.io


    【解决方案1】:

    尝试删除该行中的 socket 参数

       socket.on('disconnect', function(socket){
    

    【讨论】:

    • 哈哈太棒了!我猜测'disconnect' 事件中传递的新socket 不包含handshake 属性。但是第一个'connection' 事件的原件可以!所以我可以用它来代替。非常感谢!
    猜你喜欢
    • 2014-01-02
    • 2016-07-08
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多