用户将聚集在聊天室
向进程组发送/广播消息的实用方法是什么。
说明:
ID
,ETS
存储将用于存储用户的进程ID和房间ID{Pid, Rid}
问题
如何同步向与Room ID配对的所有进程发送消息?
同步是不可能的。
你可以使用在聊天室Rid中获得用户Pid的列表
ListPid = ets:select(table,[{{'$1','$2'},[{'==','$2',Rid}],['$1']}])
你可以用列表理解或lists:foreach/2
来广播消息
lists:foreach(fun(X) -> X ! Message end,ListPid)
根据您在ETS中进行搜索的频率,最好将信息存储为{Rid,Pid},并使用可能更快的ETS:lookup/2。