当前位置: 首页 > 知识库问答 >
问题:

如何使node.js TCP连接自动重新连接?

虞滨海
2023-03-14

下面是我到目前为止的代码:

function connect () {
  client = new net.Socket();
  client.connect(config.port, config.host, function () {
    console.log('connected to server');
  });

  client.on('close', function () {
    console.log('dis-connected from server');
    connect();
  });

  client.on('error', ...); // what do I do with this?
  client.on('timeout', ...); // what is this event? I don't understand
}

有人能解释一下在错误超时情况下我该做什么吗?以及如何知道网络已断开并重新连接?

共有1个答案

伏砚
2023-03-14

您可以将error事件处理程序保留为no-op/empty函数,除非您还希望记录错误或一些有用的功能。TCP套接字的close事件总是发出,即使在error之后也是如此,因此您可以忽略它。

此外,close事件处理程序会被传递一个布尔had_error参数,该参数指示套接字关闭是否由于错误而不是正常的连接断开。

timeout事件用于检测两个endpoint之间的通信量丢失(使用的超时是用socket.setTimeout()设置的。

 类似资料:
  • 问题:当我的spring应用程序运行时,同时数据库服务器停止/重新启动,然后db连接丢失并且从未恢复。 com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientConnectionException:连接关闭后不允许任何操作。 服务mysql启动 问题:如何告诉spring在连接丢失后自动重新连接? 这是我的配置:

  • 我有一个Spring Boot应用程序,我使用ElasticsearchTemplate连接到我的ElasticSearch。然而,当它工作时,我关闭了Elasticsearch,每次我使用ElasticTemplate方法时,我都会得到一个组织。elasticsearch。客户运输NoNodeAvailableException。这很好,因为ElasticSearch不起作用。 然而,当Elas

  • 我正在运行连接到PostgreSQL数据库的Spring Boot。我已经验证了,如果在数据库之后启动Spring Boot,数据会写入数据库。 当数据库在开发中发生更改时,我遇到异常: 请注意,当发生异常时,可以再次访问数据库;我认为问题是连接陈旧,因为它最初连接到的数据库endpoint由于重新启动而不再可用。重新启动Spring Boot解决了这个问题。

  • 问题内容: 我有一个问题,如果mySQL Server在“睡眠时间” 500秒后终止了会话,则下一个请求不会成功。如果mySQL Server没有关闭睡眠连接,则可能在700秒后发生相同的问题。 我能做什么?遵循我的persistence.xml的属性 如果重要的话,transactiontype为RESOURCE_LOCAL。 问题答案: 您如何配置连接池?如果它是服务器数据源,则应在服务器中设

  • 问题内容: 我正在尝试通过Mongoose设置MongoDB自动重新连接功能。我尝试通过该选项的所有方式均无效,或者至少未发出该事件。 我尝试过的 如果其中之一是正确的,则应触发该事件并在控制台中记录一条消息,但是这永远不会发生。 如果重新连接前有延迟,有人知道如何配置吗? 提前致谢 对于任何寻找到这一点,看看这个和这个问题在猫鼬库。 问题答案: 我和您有同样的问题,而robertklep的解决方

  • 我想在弹簧靴中使用RedisTemplate。我可以成功地使用StringRedisTemplate,但我不能使用Redistemplate。这是密码。 然后,运行测试方法:testObject(),下面是错误报告: