2017-01-17 6 views
0

Я делаю приложение, которое соответствует 2 пользователям. Я пытаюсь использовать socket.assigns, чтобы сохранить электронное письмо от Person B to Person A, и наоборот.Phoenix: Как передавать события на другой канал?

Когда человек A делает запрос на канал, я могу обновить сокет без проблем с помощью assign(socket, :matched_client_email, "[email protected]"). Тем не менее, я не знаю, как передать на канал Person B, так что я могу назвать assign(socket, :matched_client_email, "[email protected]")

def handle_in("find_match", %{ "app" => app }, socket) do 
    ... 

     push socket, "match_found", %{ 
     email: matched_user.email, 
     first_name: first_name(matched_user.name), 
     profile_image: matched_user.profile_image, 
     } 

     VideoChat.Endpoint.broadcast(
     "user_pool:#{matched_user.email}", 
     "match_found", 
     %{ 
      email: current_user.email, 
      first_name: first_name(current_user.name), 
      profile_image: current_user.profile_image, 
     } 
    ) 
    ... 

    {:noreply, socket} 
    end 

    # never gets called 
    def handle_out("match_found", %{ "email" => email }, socket) do 
    Logger.info("HEREEEE #{email}") 
    assign(socket, :matched_client_email, email) 
    {:noreply, socket} 
    end 

Как бы транслировать событие Person B из канала человека, так что метод handle_in называется?

+0

У вас есть вызов [ 'Phoenix.Channel.intercept/1'] (https://hexdocs.pm/phoenix/Phoenix.Channel.html#intercept/1) в модуле? – Dogbert

+0

oooo не знал об этом, позвольте мне попробовать – Edmund

+0

Не могли бы вы узнать разницу между 'handle_in' и' handle_out'? – Edmund

ответ

1

Вам необходимо позвонить Phoenix.Channel.intercept/1 со списком нужных вам событий handle_out. В вашем случае, вы должны добавить следующее:

intercept ["match_found"] 

 Смежные вопросы

  • Нет связанных вопросов^_^