使用websocket向所有连接的用户广播消息(Erlang,RabbitMQ,Websocket,Gen_bunny,Cowboy)

我正在尝试使用ERlang,Cowboy,Websocket和gen_bunny整合websocket聊天.

我能够让他们独立工作.

浏览器 – >牛仔websocket聊天(作品)
Erlang和RabbitMQ AMQP(作品)

将它们集成在一起时,我能够将消息从浏览器传递给Cowboy并将其传递给RabbitMQ并再次从RabbitMQ中获取.

我甚至可以将消息回复给发送它的用户.但是,我想将消息广播给所有连接的用户.

根据我的理解,Erlang将为每个用户创建一个单独的进程.那么,在我从RabbitMQ回复之后如何将它广播给所有连接的用户?

最佳答案 看看gproc项目:
https://github.com/uwiger/gproc

它有一个Pub / Sub模式,您可以用它来构建您提到的聊天.

来自gproc的wiki:

subscribe(EventType) ->
    %% Gproc notation: {p, l, Name} means {(p)roperty, (l)ocal, Name}
    gproc:reg({p, l, {?MODULE, EventType}}).

notify(EventType, Msg) -> 
    Key = {?MODULE, EventType},
    gproc:send({p, l, Key}, {self(), Key, Msg}). 
点赞