【问题标题】:Phoenix - return Ecto query results to a specific clientPhoenix - 将 Ecto 查询结果返回给特定客户端
【发布时间】:2016-09-19 07:36:54
【问题描述】:

我目前正在尝试设计一个方案来解决以下问题。

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

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

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

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

【问题讨论】:

    标签: elixir ecto channels phoenix-channels


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 2023-03-13
      • 2020-11-22
      • 1970-01-01
      • 2018-05-23
      • 2013-03-31
      相关资源
      最近更新 更多