javascript - 获取循环套接字对象nodejs的属性

标签 javascript jquery node.js sockets properties

所以,我遇到了这个奇怪的问题:首先,我连接到这样的套接字:

window.GLOBAL_socket = io.connect('http://localhost:8080');

然后,如果我打印出 window.GLOBAL_socket 变量,我会得到一个循环变量,其中包含属性“connected”,如果连接成功则设置为 true,如果连接不成功则设置为 false安慰。但是当我写下以下内容时:

console.log(window.GLOBAL_socket.connected);

它总是返回“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);
});

关于javascript - 获取循环套接字对象nodejs的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423062/

相关文章:

javascript - 如何使用 ExtendScript 在 InDesign 中以编程方式将文本设置为 "Small Caps"?

javascript - 将英语数字转换为波斯语

javascript - 无法使用 javascript 获取动态删除/编辑 HTML 表的值

javascript - `npm install`后出现关于python语法错误的错误?

javascript - 如果触发了单击事件,则阻止调用代码

javascript - 从 Angular Controller 访问输入字段会导致未定义

javascript - Bootstrap 单选按钮和切换按钮的 Jquery 插件兼容性

javascript - 如何更改 :visited in a menu 的焦点

javascript - 更改选定复选框上的标签类别

node.js - 具有过渡背景位移的 Bootstrap 轮播