我开发了一个使用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});
听起来你可以使用upnode,它会自动缓冲命令并重新连接丢弃的dnode连接。
我不认为connect
事件会被触发,因为你在其中设置它的函数是 dnode 的"连接"处理程序。
您可能还想查看我的 enode 库,它捆绑了上节点功能和 IMO,使 dnode api 更加直观。它还维护活动连接的列表,更好地处理错误对象并简化断开连接和关闭。