我知道如何发送消息,但接收功能让我感到不安。
broadcast(Message) ->
Nodes = nodes(),
gen_server:cast(aname, {broadcast, Message, Nodes}).
handle_cast({broadcast, Message, Nodes}, State) ->
lists:map(fun(x) -> {aname, X} ! Message end, Nodes).
我应该如何从其他节点接收消息?
答案 0 :(得分:2)
使用!
运算符发送到gen_server进程的消息在handle_info
函数中收到:
handle_info(Message, State) ->
%% do something with Message here
{noreply, State}.
这与消息是否是从另一个节点发送无关。
答案 1 :(得分:2)
gen_server:cast / 3或gen_server:multi_call / 3
答案 2 :(得分:1)
如果要在不同节点上转换为多个已注册的gen_server:s,请使用gen_server:abcast / 2或gen_server:abcast / 3如果要解决其中一些节点。至于接收,如果您从本地或远程节点获得消息,如果您没有在消息中包含可用于确定发送者的任何内容,则没有可观察到的差异。