在 Erlang Web 框架 Nitrogen 中,我有以下问题。我有一个进程负责将消息发送和接收到另一个充当集线器的进程。该进程充当彗星进程来接收消息并更新页面。
问题是,当用户处理按钮时,我会调用事件。我如何在活动中获得该 Pid。
启动通信并设置接收部分的代码如下所示,首先我有一个事件,它通过调用 wf:comet 来启动客户端进程:
event(start_chat) ->
Client = wf:comet(fun() -> chat_client() end);
客户端进程的代码如下,它在开始时获取并加入一个房间,然后进入一个循环向/从房间发送和接收消息:
chat_client() ->
Room = room_provider:get_room(),
room:join(Room),
chat_client(Room).
chat_client(Room) ->
receive
{send_message, Message} ->
room:send_message(Room, Message);
{message, From, Message} ->
wf:insert_bottom(messages, [#p{}, #span { text=Message }]),
wf:comet_flush()
end,
chat_client(Room).
现在,问题来了。我有另一个事件,send_message:
event(send_message) ->
Message = wf:q(message),
ClientPid ! {send_message, Message}.
除了那里没有定义 ClientPid 之外,我看不到如何获得它。有任何想法吗?
Nitrogen 邮件列表中的相关威胁:http ://groups.google.com/group/nitrogenweb/browse_thread/thread/c6d9927467e2a51a