Erlang gen_服务器能否从两个不同的客户端进程接收消息?
我有一台由另一台服务器(即,Erlang gen_服务器能否从两个不同的客户端进程接收消息?,erlang,Erlang,我有一台由另一台服务器(即,ejabberd)启动的gen\u服务器(my\u gen\u server.erl) 在my_gen_server.erl中,我启动了另一台服务器,该服务器处理HTTP2调用,如下所示: {ok, ServerPid} = apns:connect(cert, my_first_connection). 现在,myu_gen_server正在接收来自ejabberd和ServerPid的消息,我如下处理: 1. handle_info({reconnectin
ejabberd
)启动的gen\u服务器(my\u gen\u server.erl
)
在my_gen_server.erl
中,我启动了另一台服务器,该服务器处理HTTP2
调用,如下所示:
{ok, ServerPid} = apns:connect(cert, my_first_connection).
现在,myu_gen_server
正在接收来自ejabberd
和ServerPid
的消息,我如下处理:
1. handle_info({reconnecting, ServerPid}=Msg, State) -> %% do Something
2. handle_info({connection_up, ServerPid}=Msg, State) -> %% do Something
3. handle_info(#offline_msg{...} = _Msg, State) -> %% do Something
因此,1和2由ServerPid
发送,3由ejabberd
发送。这是工作,但我不确定正确的行为。所以
我的问题是:
- 这是接收/处理来自多个客户端进程的消息的正确行为吗
请提供帮助。任何具有gen_服务器pid的进程都可以使用向gen_服务器发送消息代码>,将由gen_服务器的功能处理:
handl_info()
任何具有gen_服务器pid的进程都可以调用以下函数:
call(GenServerPid, Msg)
cast(GenServerPid, Msg)
handle_call()
handle_cast()
这将由gen_服务器功能处理:
call(GenServerPid, Msg)
cast(GenServerPid, Msg)
handle_call()
handle_cast()
在elixir中,有一个名为Agent
的模块,它只是一个存储状态的gen_服务器,就像计数器一样。多个进程可以更新计数器并检索当前计数。当然,某些进程必须启动gen_服务器,然后将pid传递给希望更新/检索计数的其他进程。任何具有gen_服务器pid的进程都可以使用向gen_服务器发送消息代码>,将由gen_服务器的功能处理:
handl_info()
任何具有gen_服务器pid的进程都可以调用以下函数:
call(GenServerPid, Msg)
cast(GenServerPid, Msg)
handle_call()
handle_cast()
这将由gen_服务器功能处理:
call(GenServerPid, Msg)
cast(GenServerPid, Msg)
handle_call()
handle_cast()
在elixir中,有一个名为Agent
的模块,它只是一个存储状态的gen_服务器,就像计数器一样。多个进程可以更新计数器并检索当前计数。当然,某些进程必须启动gen_服务器,然后将pid传递给希望更新/检索计数的其他进程