我创建了一个封装 tcp/ip 功能的通用行为。该行为的用户所要做的就是实现处理来自套接字另一侧的任何已解析“命令”的回调。
我的通用行为创建了一个端口侦听器进程,该进程通过 gen_tcp:accept 侦听端口。当有人连接到端口时,端口侦听器要求主管启动一个新的端口侦听器,同时继续处理与刚刚连接的任何客户端的套接字通信。因为这些端口侦听器/套接字处理程序中的每一个都是动态创建且相同的,所以我使用 simple_one_for_one 主管来创建它们。标准的东西。
这是我的问题。如果端口侦听进程终止,则整个行为将不起作用,因为将没有任何东西在侦听端口。因为 port-listener 是由 simple_one_for_one supervisor 创建的,supervisor 不能重新启动一个新的 port_listener。
那么,我是否创建了一个 keep_alive 进程来监视“最新”端口侦听器并要求 superviosr 在它死后启动另一个?或者,对于这种类型的案例是否还有其他一些最佳实践。
此外,有没有办法查看/检查此行为创建的过程?它不是一个应用程序,所以 appmon 在这里不起作用。
谢谢