如何在雅司病中捕获进程退出?

How can I trap process exits in yaws?

一个单独的 Erlang 聊天服务器将所有 PIDs 存储在 mnesia table 中并将它们分组在房间 ID 下,因此当用户发送消息,A gen_server 将消息发送给该 Room ID 下的所有进程。

到目前为止一切正常,但问题是:

当用户订阅服务器时,服务器向所有 pids 发送一条消息以通知订阅者有新订阅者,但是我想不出 of/know 一个实用的方法来反转它.

我需要让人们知道订阅者已取消订阅并从 table 中删除 pid。我怎样才能在雅司病中实现这样的 supervsor

当服务器向所有 pid 发送消息以通知它们有新订阅者时,让它也通知一个工作是 erlang:monitor/2 each new subscriber process. That process, a gen_server, could keep a table of some sort as its state, like a map, dict, or ets table, that stores the reference returned from erlang:monitor/2 along with the associated room ID. When a subscriber process dies, the monitor process will receive a {'DOWN', MonitorRef, Type, Object, Info} message via its gen_server:handle_info/2 function 的进程,然后它可以查找 MonitorRef处于其状态并通知关联的房间已删除订阅。