如何使用Phoenix频道直接回复用户的消息?

Nat*_*ong 4 elixir phoenix-framework

我已经构建了Phoenix Channels文档中显示的基本聊天应用程序.现在,我希望通过仅回复发件人来处理某些邮件.

例如,如果用户键入/who,则发送它们(并且仅发送它们)连接用户的列表.

我怎样才能做到这一点?

Nat*_*ong 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
Run Code Online (Sandbox Code Playgroud)

(如果设置handle_in为返回垃圾,就像空字符串一样,结果错误解释了可接受的返回值格式,这是我学习它的地方.)

在Javascript中

当你channel.push,只是.receive为了答复链接.

    channel.push("new_msg", {body: $chatInput.val()}).receive(
      "ok", (reply) => console.log("got reply", reply)
     )
Run Code Online (Sandbox Code Playgroud)

(感谢Manuel Kallenbach的回答.)