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

时间:2016-05-22 11:31:52

标签: elixir ecto channels phoenix-channels

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

客户A已订阅/已连接至主题/频道T

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,频道应该做你想要的工作。您可以使用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,请参阅文档here