我在两个不同的erlang节点(在2台不同的机器或设备上)之间建立了一种同步机制。其中一个设备将与网络断开连接以完成另一项任务。
当设备重新连接到网络时,它需要联系另一个erlang节点以启动数据同步。
当网络连接可用时,erlang中是否有办法接收消息?或者我是否必须进行某种民意调查。
谢谢, 布拉德
答案 0 :(得分:1)
您可以通过net_kernel:monitor_nodes/1
订阅节点连接更改。这会向您发送可用于驱动您自己的同步逻辑的{nodeup, Node}
和{nodedown, Node}
条消息。
您可能希望定期运行net_adm:ping(TargetNode)
的进程尝试连接到其他节点,以便随后获取{nodeup, TargetNode}
消息。这样可以避免通过轮询(未记录的)inet:getiflist/0
进行更改来明确检查OS网络可用性。