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

时间:2015-08-19 07:41:42

标签: 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");
        })
     });

ps我可以得到socket.ids为0而不是socket.id。

2 个答案:

答案 0 :(得分:5)

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

socket.on('connect', () => {console.log(socket.id)});

'连接'是连接准备就绪时发出的系统事件。

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

答案 1 :(得分:0)

设置端口Lister并通过匿名函数'http://localhost:8000'获取ID

this.socket = io('http://localhost:8000');
    this.socket.on('connect' , () => {
      console.log(this.socket.id);
    });