2012-07-18 158 views
5

TLDR:是否存在可自动重新连接到有时会失败的TCP服务器的可重用代码?自动重新连接到TCP主机


我正在写一个服务器应用程序 - 称之为hal - 这也开辟了一些TCP连接到其他服务器 - 其中xbmc。我原本是这样写的,所以当xbmc失败时,xbmc erlang进程将停止,并随后由其主管重新启动。

显然,这不是在erlang中执行持久性TCP连接的好方法。首先,它并不是真正的工作:当xbmc失败时,这个过程会很快重新启动,并且主管会关闭整个hal程序。其次,我显然不应该使用这个主管:Erlang Supervisor Strategy For Restarting Connections to Downed Hosts(当我阅读它,这个链接的问题只回答“主管是否解决这个问题?”,并且不是我的问题的重复)

我是认为这听起来像是一个相当常见的用例,即使主机不时出现故障,也尽可能保持TCP连接的连接。是否有一些OTP或其他库代码我应该用来实现这一目标?

回答

3

不,在OTP中没有任何事情可以为您做到这一点。

我想说,考虑到我自己写这个的次数,现在是编写体面连接管理库的好时机。特别是考虑最近一次连接尝试和结果历史的人,可以给出一个端点地址(主机名和端口),并使用主机名查找返回的多个地址为具有多个目标的端点执行快速故障转移。

+0

谢谢。回答“否”并不总是那么容易:)对于你的下一个开源项目,我建议你做这个连接管理器:D – 2012-07-19 09:37:41

+0

碰巧,现在我或多或少都在写它。如果/当它被发布,我会更新我的答案。 – archaelus 2012-07-23 14:13:31

相关问题