TLDR:是否存在用于自动重新连接到有时失败的 TCP 服务器的可重用代码?
我正在编写一个服务器应用程序——称之为它hal
——它还打开了到其他服务器的一些 TCP 连接——其中包括xbmc
。我最初编写它是为了当xbmc
失败时,xbmc
erlang 进程将停止并随后由其主管重新启动。
显然,这不是在 erlang 中进行持久 TCP 连接的好方法。首先,它并没有真正起作用:当xbmc
失败时,进程会重启得太快,主管会关闭整个hal
程序。其次,我显然不应该为此使用主管:Erlang Supervisor Strategy For Restarting Connections to Downed Hosts(当我读到它时,这个链接的问题只回答“主管解决这个问题吗?”,而不是我的问题的重复)
我认为这听起来像是一个相当常见的用例,即使主机不时出现故障,也要尽可能保持 TCP 连接的连接。我应该使用一些 OTP 或其他库代码来实现这一点吗?