Гнездо висят в дноде

Я разработал двустороннюю связь клиент / сервер с использованием 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});

1 ответ

Решение

Похоже, вы могли бы сделать с upnode, который буферизует команды и автоматически восстанавливает удаленные соединения dnode.

Я не думаю, что connect Ожидается, что событие будет запущено, потому что функция, которую вы установили внутри, является обработчиком dnode 'on connection'.

Возможно, вы также захотите проверить мою библиотеку enode, которая объединяет функциональность upnode и IMO, делает dnode api более интуитивно понятным. Он также поддерживает список активных соединений, лучше обрабатывает объекты Error и упрощает отключение и закрытие.

Другие вопросы по тегам