繁体   English   中英

如何捕获偏航过程出口?

[英]How can I trap process exits in yaws?

单独的Erlang聊天服务器将所有PIDs存储在mnesia表中,并在Room ID下对其进行分组,因此,当用户发送消息时, gen_server会将消息发送到该Room ID下的所有进程。

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

当用户订阅服务器时,服务器会向所有pids发送一条消息,以通知订阅者有关新订阅者的信息,但是我想不出/不知道有一种实用的方法可以pids订阅。

我需要让人们知道订户已取消订阅并从表中删除该pid。 如何在偏航supervsor中实现这样的supervsor

当服务器向所有pid发送消息以通知它们有新订阅者时,还让它通知工作为erlang:monitor/2每个新订阅者进程的进程。 该进程gen_server可以保留某种状态的表,例如mapdictets表,该表存储从erlang:monitor/2返回的引用以及关联的房间ID。 当订阅者进程{'DOWN', MonitorRef, Type, Object, Info}监视进程将通过其gen_server:handle_info/2函数接收{'DOWN', MonitorRef, Type, Object, Info}消息,然后可以在其状态下查找MonitorRef并通知相关联删除订阅的空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM