我目前正在尝试设计一个发生以下情况的方案。
客户端A
已订阅/连接到 topic/channel T
。
A
select
以查询的形式向 发送消息T
。
只A
接收查询结果,不接收其他订阅者。
这甚至可以使用频道吗?我选择 Channels 的主要原因是出色的 websocket 支持 - 但是我对其他 Phoenix 解决方案持开放态度。
我目前正在尝试设计一个发生以下情况的方案。
客户端A
已订阅/连接到 topic/channel T
。
A
select
以查询的形式向 发送消息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
的文档