【问题标题】:Socket hang in dnode套接字挂在 dnode
【发布时间】:2012-05-10 19:28:51
【问题描述】:

我使用 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});

【问题讨论】:

    标签: node.js socket.io dnode


    【解决方案1】:

    听起来你可以使用upnode,它会自动为你缓冲命令并重新连接断开的 dnode 连接。

    我认为connect 事件不会被触发,因为您在中设置它的函数是 dnode 的“连接时”处理程序。

    您可能还想查看我的 enode 库,它捆绑了 upnode 功能和 IMO,使 dnode api 更加直观。它还维护一个活动连接列表,更好地处理错误对象并简化断开和关闭。

    【讨论】:

    • 我将添加 upnode 以进行快速修复,但肯定会使用 enode 重建东西!伙计,你的库很棒。
    • 谢谢!如果您有任何问题,请告诉我!
    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2016-09-06
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多