凤凰频道:向特定客户发送推送

时间:2016-06-07 13:36:32

标签: elixir phoenix-framework

您好我正在尝试使用elixir phoenix重新实现whatsapp功能。我在解决以下问题时遇到了问题:如果聊天室中的所有人都收到了该消息,我想发送消息状态为“已收到”的所有者,以便他可以显示双勾号。但是,你如何向一个特定的客户广播?

1 个答案:

答案 0 :(得分:5)

您可以通过每个用户的主题来解决这个问题,这可以通过模式匹配轻松实现,同时注意安全验证:

Repo.get

当用户连接到套接字时,您将从defmodule MyApp.UserSocket do use Phoenix.Socket def connect(%{"token" => token}, socket) do case Phoenix.Token.verify(socket, "user", token, max_age: 1209600) do {:ok, user_id} -> socket = assign(socket, :user, Repo.get!(User, user_id)) {:ok, socket} {:error, _} -> #... end end end 存储用户:

YourAll.Endpoint.broadcast user_topic, "message", %{details: "etc"}

最后,您可以在套接字上下文之外向特定用户发送消息:

{{1}}

为了测试性能,这是一个very informative session,其中Gary Rennie展示了如何使用Tsung工具对WebSockets进行基准测试。