单独二郎聊天服务器存储下一个房间ID,以便当用户发送的消息的mnesia
表和组他们所有PIDs
,A gen_server
将消息发送到根据该房间ID的所有进程。如何捕获雅司病毒中的进程退出?
到目前为止一切都很正常,但问题是:
当用户订阅服务器,该服务器将消息发送到所有pids
通知有关新用户的用户,但我想不出/知道切实可行的做法。
我需要让人们知道订户已取消订阅并从表中删除该pid。我怎样才能在雅司中实现这样的supervsor
?
单独二郎聊天服务器存储下一个房间ID,以便当用户发送的消息的mnesia
表和组他们所有PIDs
,A gen_server
将消息发送到根据该房间ID的所有进程。如何捕获雅司病毒中的进程退出?
到目前为止一切都很正常,但问题是:
当用户订阅服务器,该服务器将消息发送到所有pids
通知有关新用户的用户,但我想不出/知道切实可行的做法。
我需要让人们知道订户已取消订阅并从表中删除该pid。我怎样才能在雅司中实现这样的supervsor
?
当服务器向所有pids发送一条消息以通知他们一个新的订阅者时,是否还通知一个进程,该进程的作业是erlang:monitor/2
每个新的订阅者进程。该过程(gen_server
)可以保留某种表格作为其状态,如map
,dict
或ets
表格,该表格存储从erlang:monitor/2
返回的引用以及关联的房间ID。当用户进程死亡时,监控进程将通过其gen_server:handle_info/2
function收到一条{'DOWN', MonitorRef, Type, Object, Info}
消息,然后它可以在其状态中查找MonitorRef
,并通知相关联的房间丢失预订。