获取 属性 个圆形套接字对象 nodejs
getting property of circular socket object nodejs
所以,我遇到了这个奇怪的问题:首先,我像这样连接到一个套接字:
window.GLOBAL_socket = io.connect('http://localhost:8080');
然后,如果我打印出 window.GLOBAL_socket 变量,我会得到一个循环变量,其中包含 属性 'connected' 如果连接成功则设置为 true,如果连接成功则设置为 false它不像在 google chrome 控制台中看到的那样。但是当我写下以下内容时:
console.log(window.GLOBAL_socket.connected);
总是returns'false'。任何人都知道为什么这不会改变?
(同样发生在 属性 'disconnect'; 当我打印出整个变量时发生变化,但在打印出 属性 时保持 'true'。
亲切的问候,
芝诺
问题是您打印得太早了。它还没有连接。因此你打印出来的是正确的——没有连接。
它在控制台上工作的原因是当您在控制台中输入时它已经连接。
为了证明这一点,稍后打印出来:
setTimeout(function(){
console.log(window.GLOBAL_socket.connected);
},5000); // hopefully 5 seconds is long enough to connect
// adjust this as necessary
或者您可以继续记录直到连接成功:
var connect_check = setInterval(function(){
console.log(window.GLOBAL_socket.connected);
if (window.GLOBAL_socket.connected) {
clearInterval(connect_check);
}
},10); // do this 100 times per second
另一种稍后执行函数的方法是将其附加到 onclick 事件:
<button id="log">Log Connected Status</button>
<script>
document.getElementById('log').onclick = function(){
console.log(window.GLOBAL_socket.connected);
};
</script>
当然,你可以简单地使用socket.io连接事件:
GLOBAL_socket.on('connection',function(){
// But then the following is redundant because we KNOW
// it's connected because we're in this event handler.
console.log(window.GLOBAL_socket.connected);
});
所以,我遇到了这个奇怪的问题:首先,我像这样连接到一个套接字:
window.GLOBAL_socket = io.connect('http://localhost:8080');
然后,如果我打印出 window.GLOBAL_socket 变量,我会得到一个循环变量,其中包含 属性 'connected' 如果连接成功则设置为 true,如果连接成功则设置为 false它不像在 google chrome 控制台中看到的那样。但是当我写下以下内容时:
console.log(window.GLOBAL_socket.connected);
总是returns'false'。任何人都知道为什么这不会改变? (同样发生在 属性 'disconnect'; 当我打印出整个变量时发生变化,但在打印出 属性 时保持 'true'。
亲切的问候,
芝诺
问题是您打印得太早了。它还没有连接。因此你打印出来的是正确的——没有连接。
它在控制台上工作的原因是当您在控制台中输入时它已经连接。
为了证明这一点,稍后打印出来:
setTimeout(function(){
console.log(window.GLOBAL_socket.connected);
},5000); // hopefully 5 seconds is long enough to connect
// adjust this as necessary
或者您可以继续记录直到连接成功:
var connect_check = setInterval(function(){
console.log(window.GLOBAL_socket.connected);
if (window.GLOBAL_socket.connected) {
clearInterval(connect_check);
}
},10); // do this 100 times per second
另一种稍后执行函数的方法是将其附加到 onclick 事件:
<button id="log">Log Connected Status</button>
<script>
document.getElementById('log').onclick = function(){
console.log(window.GLOBAL_socket.connected);
};
</script>
当然,你可以简单地使用socket.io连接事件:
GLOBAL_socket.on('connection',function(){
// But then the following is redundant because we KNOW
// it's connected because we're in this event handler.
console.log(window.GLOBAL_socket.connected);
});