Phoenix - 将 Ecto 查询结果返回给特定客户端



我目前正在尝试设计一个发生以下情况的方案。

客户端A订阅/连接到主题/频道T

Aselect查询的形式向T发送消息。

只有A接收查询结果,没有其他订阅者。

使用频道甚至可以做到这一点吗?我选择Channels的主要原因是出色的websocket支持 - 但是我对其他Phoenix解决方案持开放态度。

是的,频道应该做你想要的工作。您可以使用以下push方法将查询结果向下推送给发送查询的用户:

def handle_in("new_query", %{"query" => query}, socket) do
    # do the query and store the result into query_result
    #return back the result using push to the user
    push socket, "new_query", %{query_result: query_result}
    {:ok, socket}
end

如果要将查询结果返回给加入该主题的所有用户,只需使用 broadcast 而不是 push ,请参阅此处的文档

相关内容

  • 没有找到相关文章

最新更新