Гнездо висят в дноде
Я разработал двустороннюю связь клиент / сервер с использованием 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 и упрощает отключение и закрытие.