【发布时间】:2015-11-12 09:22:44
【问题描述】:
如果我执行 console.log(socket),我会在 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。
【问题讨论】:
-
当我在 firebug 中执行
console.log()时,它按预期工作。你试过吗? -
另外,尝试将您的代码更改为
console.log(JSON.stringify(socket)),我想您会明白发生了什么。 -
for
console.log(JSON.stringify(socket))我得到 TypeError: cyclic object value。这是我应该看到的吗? -
嗯。好的。所以它不可字符串化。当调用
console.log()时,您应该看到套接字对象尚未连接。但是您可以看到已连接的套接字对象的原因是控制台显示了该对象的实时引用,因此您看到的实际上是socket的未来版本 -
为了向自己证明这一点,请在
setTimeout()中打印socket.id。
标签: javascript node.js express socket.io