我已经构建了Phoenix Channels docs中显示的基本聊天应用程序。现在,我希望通过仅回复发件人来处理某些邮件。
例如,如果用户键入/who
,请向他们(仅限他们)发送已连接用户列表。
我该怎么做?
答案 0 :(得分:14)
匹配的handle_in
函数头需要返回一个格式如下的响应:{:reply, {status :: atom, response :: map}, Socket.t}
。
例如:
def handle_in("new_msg", %{"body" => "/who"}, socket) do
user_list = UserList.get # or whatever
{:reply, {:ok, %{kind: "private", from: "server", body: user_list}}, socket}
end
(如果将handle_in
设置为返回垃圾,就像空字符串一样,结果错误解释了可接受的返回值格式,这是我学习它的地方。)
当您channel.push
时,只需链接.receive
即可获得回复。
channel.push("new_msg", {body: $chatInput.val()}).receive(
"ok", (reply) => console.log("got reply", reply)
)