【发布时间】:2017-03-12 06:49:45
【问题描述】:
我目前正在编写一个 Electron 应用程序,在主进程中我想通过 websockets 与服务器通信。
我的部分主进程的代码库取决于用户的套接字连接状态。我需要socket.io-client 库
const socket = require('socket.io-client')(host);
这使我可以访问变量socket.connected,根据是否与服务器建立连接,它是true 或false。
因此,我想要将事件发射器附加到此变量。我已经让它与轮询一起工作
var events = require('events').EventEmitter;
var event = new events();
// Emits successfully every 200ms 'Connection: true|false'
event.on('status', function(status){
console.log('Connection: ', status);
});
setInterval(function() {
let status = socket.connected;
event.emit('status', status);
}, 200);
但想知道这是否真的是实现它的方式。对我来说,不得不求助于像 nodejs 这样的异步框架中的轮询似乎很奇怪。另一方面,我找不到其他方法来实现。最好的情况是以某种方式将事件发射器直接附加到socket.connected,但无法找到如何做到这一点。有人可以建议我更好的实施方式吗?
谢谢
【问题讨论】:
-
您真正希望收到通知的事件是什么?
socket.io-client用于作为客户端连接到其他 socket.io 服务器。 -
好吧,这正是我的用例:我的电子应用程序作为客户端连接到 socket.io 服务器......
-
还有,您希望收到什么事件通知?
-
也许我的帖子不清楚... socket.io-client 跟踪与
socket.connected=true|false上的套接字服务器的连接。每当此变量更改true->false/false->true我希望发出该更改。 -
这正是我在下面的回答所显示的。套接字在连接时已经发出一个事件。
标签: node.js sockets socket.io electron polling