1

私はdnodeを使用してクライアント/サーバー双方向通信を開発しました。
クライアントがサーバーに接続するとき、サーバーがこの接続を使用して必要なときにクライアントでメソッドを呼び出すことができるように、接続を維持します。
接続が非アクティブになっているように見えることがあります。その後、クライアントを手動で再起動する必要があります。いくつかの特定のオプションを使用して、接続をアクティブなままにすることはできますか?(私は3秒ごとに再接続するとうまくいきますが、そうではないようです)。

サーバーは次のようなものです

dnode(function (remote, conn) {

  conn.on('connect', function (){     // THIS METHOD IS NEVER CALLED !!! I DON'T KNOW WHY
    console.log("connection");
  });

  // Connection starts
  conn.on('ready', function () {
      // Keep remote in a hash for later usage
      ...
  });

  // Connection ends
  conn.on('end', function(){
     // Remove remote object from hash
     ...
  });

}).listen(5000);

クライアント:

// Define client functions
dnode(function (remote, conn) {
    // Ping
    this.ping = function (cb) {
        cb("pong");
    };

    // Other functions
    ...
}).connect(server, port, {'reconnect': 3000});
4

1 に答える 1

1

コマンドをバッファリングし、ドロップされた dnode 接続を自動的に再接続するupnodeでできるように思えます。

connect内部で設定した関数dnodeの「接続時」ハンドラーであるため、イベントが発生することは期待されていないと思います。

upnode 機能と IMO をバンドルし、dnode API をより直感的にする私のenodeライブラリもチェックしてみてください。また、アクティブな接続のリストを維持し、エラー オブジェクトをより適切に処理し、切断と終了を簡素化します。

于 2012-05-10T19:38:08.233 に答える