我正在使用mnesia为已连接到某个websocket的用户存储Pid。
-record(connection, {pid, name}).
handle_join(ServiceName, WebSocketId, State, EventName) ->
mnesia:dirty_write(#connection{pid=WebSocketId, name=EventName}).
Pid是关键,使用tv:start()应用程序我能够看到Pid正确存储在连接表中。我现在想要向该表中的所有Pids发送消息,并在websocket连接关闭时删除Pid。
从该连接表中检索所有Pids的最佳方法是什么?
答案 0 :(得分:1)
您可以使用all_keys(Tab) -> KeyList | transaction abort
或dirty_all_keys(Tab) -> KeyList | exit({aborted, Reason}).
。
all_keys(标签) - > KeyList |交易中止
此函数返回名为Tab的表中所有键的列表。该 此函数的语义是上下文敏感的。见mnesia:activity / 4 欲获得更多信息。在事务上下文中,它获取读锁定 在整个桌子上。