将事件发射器附加到socket.connected

时间:2016-10-29 16:03:15

标签: node.js sockets socket.io electron polling

我目前正在编写一个Electron应用程序,在主要进程中我想通过websockets与服务器通信。

我的主要流程的一部分'代码库取决于用户的套接字连接状态。我需要socket.io-client

const socket = require('socket.io-client')(host);

根据是否与服务器建立连接,我可以访问变量socket.connectedtruefalse

因此,我想要的是将事件发射器附加到此变量。我已经使它与投票一起工作

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,但无法找到如何做到这一点。有人可以告诉我更好的实施方法吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以通过connect事件获得有关客户端连接完成情况的通知:

socket.on('connect', function() {
    // client socket is now connected to the server
});

socket.on('disconnect', function() {
    // client socket is now disconnected from the server
});

此处客户事件的文档:http://socket.io/docs/client-api/#manager(url:string,-opts:object)。如果您还希望查看其他内容(如重新连接),则该文档中还有其他事件。