Я делаю приложение, которое соответствует 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
называется?
У вас есть вызов [ 'Phoenix.Channel.intercept/1'] (https://hexdocs.pm/phoenix/Phoenix.Channel.html#intercept/1) в модуле? – Dogbert
oooo не знал об этом, позвольте мне попробовать – Edmund
Не могли бы вы узнать разницу между 'handle_in' и' handle_out'? – Edmund