2016-04-24 76 views
0

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

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

假设这是客户端代码,没有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 
}); 
+0

为什么这里的示例在回调中有一个套接字? https://github.com/auth0/socketio-jwt#example-usage –

+0

@amiawizard - 客户端示例看起来不对。 socket.io客户机doc不显示任何参数给'connect'事件的回调。 – jfriend00

+0

@amiawizard - 这是否回答了您的原始问题? – jfriend00