Привет Я пытаюсь переопределить функциональность whatsapp с помощью elixir phoenix. У меня возникли проблемы с выяснением следующего: если все люди в чате получили сообщение, я хочу отправить владельцу статус сообщения «получено», чтобы он мог показывать знак двойного тика. Однако как вы передаете один конкретный клиент?Каналы Phoenix: отправить push конкретному клиенту
4
A
ответ
3
Вы можете решить эту проблему с помощью темы для каждого пользователя, это может быть легко реализовано путем сопоставления с образцом, обратите внимание на проверку безопасности также:
def join("users:" <> user_id, _params, socket) do
{user_id, _} = Integer.parse(user_id)
%{id: id} = socket.assigns[:user]
#prevent connection to solo channel of other users, but allow in development
case id == user_id || Mix.env == :dev do
true ->
{:ok, socket}
false ->
{:error, "This is not your solo channel!"}
end
end
Как вы бы сохранили пользователь Repo.get
, когда пользователь подключает к розетка на:
defmodule MyApp.UserSocket do
use Phoenix.Socket
def connect(%{"token" => token}, socket) do
case Phoenix.Token.verify(socket, "user", token, max_age: 1209600) do
{:ok, user_id} ->
socket = assign(socket, :user, Repo.get!(User, user_id))
{:ok, socket}
{:error, _} -> #...
end
end
end
И, наконец, вы можете отправлять сообщения конкретному пользователю из контекста сокета, как:
YourAll.Endpoint.broadcast user_topic, "message", %{details: "etc"}
Чтобы проверить производительность, это very informative session, в котором Гэри Ренни показывает, как тестировать WebSockets с помощью инструмента Tsung.
Смежные вопросы
- 1. Phoenix - возвращает результаты запроса Ecto конкретному клиенту
- 2. Как отправить сообщение конкретному разъему с Phoenix
- 3. Как отправить сообщение конкретному клиенту в node.js
- 4. node.js socket.io не может отправить конкретному клиенту
- 5. Отправить сообщение с базового сервера конкретному клиенту
- 6. Как отправить сообщение конкретному клиенту с socket.io
- 7. Как отправить данные конкретному клиенту с сервера?
- 8. SocketIO - Как отправить данные конкретному клиенту
- 9. Python многопоточность | отправить сообщение конкретному клиенту
- 10. phoenix framework пользовательские каналы
- 11. Android: Отправить push-уведомления конкретному пользователю
- 12. Как отправить уведомление Parse Push конкретному пользователю
- 13. Каналы Phoenix - Несколько каналов на сокет
- 14. Erlang: IP-адрес клиента, отправить пакет конкретному клиенту?
- 15. cometd Байе не может отправить сообщение конкретному клиенту
- 16. Скрипт сокета Python. Как отправить данные конкретному клиенту
- 17. Как отправить сообщение конкретному клиенту с помощью WampSharp?
- 18. Как выбрать и отправить данные конкретному клиенту winsock
- 19. Отправить полезную нагрузку конкретному клиенту с концентратором уведомлений
- 20. Jwebsocket: как отправить запрос конкретному клиенту по имени
- 21. python tornado websocket server отправить сообщение конкретному клиенту
- 22. PHP: как отправить сообщение больше одному конкретному клиенту Android
- 23. Socketio отправить сообщение конкретному клиенту в пространстве имен
- 24. trigger.io push-уведомление конкретному пользователю
- 25. отправка данных конкретному клиенту из витого сервера
- 26. Отправка сообщения конкретному клиенту с использованием сокетов
- 27. SignalR Hub Отправка сигнала конкретному клиенту
- 28. Как отправлять сообщения от сервера конкретному клиенту
- 29. Передача данных конкретному клиенту с помощью сервера
- 30. Как отправить Push-уведомление конкретному пользователю в Notification Hub?
Проверьте этот вопрос: http://stackoverflow.com/questions/37373766/phoenix-return-ecto-query-results-to-a-specific-client/37375057#37375057 – simo
@simo Вопрос немного , потому что клиент A отправляет сообщение и получает сообщение также. Что мне нужно: клиент A отправляет сообщение, и только клиент B получает некоторую обратную связь – Nomad
Я думаю, что это хорошая идея посвятить тему только для клиента B, тогда вы можете транслировать эту тему, иначе я не знаю, как исключите конкретного пользователя, посмотрите здесь: http://stackoverflow.com/questions/37279779/how-to-exclude-some-users-when-broadcast – simo