为什么socket.id在浏览器中未定义

jac*_*ank 8 javascript node.js express socket.io

如果我做console.log(套接字)我在firebug中得到一个套接字对象.在obj我可以看到一个属性,id我可以看到id的值.但是,当我执行console.log(socket.id)时,我得到了未定义.为什么?

   var socket = io();
    $(document).ready( function(){
        console.log(socket);
        console.log(socket.id);
        console.log(socket.ids);
        $(".click").on("click", function(e){
            alert("clicked")
            socket.emit("clicked", socket.id)
            $(this).addClass("removeclick");
        })
     });
Run Code Online (Sandbox Code Playgroud)

ps我可以得到socket.ids0但不是socket.id.

小智 6

Socket.io需要一些时间来建立连接.我发现在客户端获取ID的最佳方法是:

socket.on('connect', () => {console.log(socket.id)});
Run Code Online (Sandbox Code Playgroud)

'connect'是连接就绪时发出的系统事件.

(我目前的socket.io版本是1.7.2)