Предполагая, что вы знаете имена узлов в кластере, вы можете зацикливать узлы, вызывая Node.spawn/2
для каждого:
def broadcast(msg) do
Process.send_after ...
end
def broadcast_everywhere(msg) do
Enum.each(@nodes, fn node ->
# if not node == Node.self do
Node.spawn node, fn ->
Broadcaster.broadcast(msg)
end
# end
end)
end
Раскомментируйте закомментированные строки, если текущий узел былуже обслужен и [вероятно] каким-то образом гарантирует, что узлы подключены и находятся в активном состоянии.
Кроме того, Node.spawn_link/*
может стоить взглянуть на.