2016-04-24 8 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

、これはクライアントコードであると仮定すると、connectイベントに渡さ一切socket引数がありませんので、あなたのコードからこれを削除します。その引数の名前をsocketとすると、スコープの高い範囲のsocket変数をオーバーライドしていました。そのイベントに何も渡されないため、この無効な変数socketundefinedになります。これに変更:

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

関連する問題