2016-10-29 7 views
-1

私は現在、メインプロセスでウェブソケットを介してサーバーと通信したいElectronアプリケーションを作成しています。イベントエミッタをsocket.connectedに接続する

私のメインプロセスのコードベースの一部は、ユーザーのソケット接続状況によって異なります。私は私のサーバーへの接続が確立されているかどうかに応じてtrueまたはfalseある変数socket.connected、へのアクセスを提供しますsocket.io-clientライブラリ

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

が必要です。

このように、私はこの変数にイベントエミッタを付けることを望みます。私はそれがポーリング

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に直接添付することですが、その方法を見つけることができませんでした。誰も私が実装するより良い方法についてアドバイスできますか?

おかげ

+0

あなたは実際にどのようなイベントを通知したいですか? 'socket.io-client'は他のsocket.ioサーバにクライアントとして接続するためのものです。 – jfriend00

+0

さて、afaikはまさに私の使用例です。私の電子アプリは、クライアントとしてsocket.ioサーバーに接続しています... –

+0

そして、どのようなイベントを通知したいですか? – jfriend00

答えて

1

あなたは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)。あなたが再接続のような他のものも見たいと思っているなら、その文書には他のイベントがあります。

+0

はい、そうです。 –

関連する問題