socket中的socket undefined用于连接

时间:2016-04-24 11:31:16

标签: socket.io

为什么回调中的套接字未定义?

main.js:26078 Uncaught TypeError: Cannot read property 'on' of undefined

控制台日志是一个Socket对象。

var jwt = sessionStorage.token;
console.log(socket);
socket.on('connect', function (socket) {  // undefined socket
  socket.on('authenticated', function () {
    //do other things
  })
  .emit('authenticate', {token: jwt}); //send the jwt
});

1 个答案:

答案 0 :(得分:2)

假设这是客户端代码,则没有socket参数传递给connect事件,因此请从代码中删除它。通过命名该参数socket,您覆盖了更高范围的socket变量,并且由于没有任何内容传递给该事件,因此这个被覆盖的socket变量将为undefined。改为:

var jwt = sessionStorage.token;
console.log(socket);
// remove socket argument from this next callback
socket.on('connect', function () {
  socket.on('authenticated', function () { // undefined socket
    //do other things
  })
  .emit('authenticate', {token: jwt}); //send the jwt
});