2016-05-22 6 views
2

В настоящее время я пытаюсь разработать схему, в которой происходит следующее.Phoenix - возвращает результаты запроса Ecto конкретному клиенту

Клиент A подписан или подключен к теме/каналу T.

A отправляет сообщение в форме запроса select на номер T.

Только A получает результаты запроса, никаких других подписчиков.

Возможно ли это, используя каналы? Основная причина, по которой я выбрал каналы, - это отличная поддержка веб-поддержки, однако я открыт для других решений Phoenix.

ответ

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

+0

Да! Отлично, спасибо! – category

+0

Добро пожаловать :) – simo