我正在尝试使用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}).