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传递给希望更新/检索计数的其他进程