Hallo, ich versuche WhatsApp Funktionalität mit Elixier Phoenix neu zu implementieren. Ich habe ein Problem beim Ausfindigmachen folgender Dinge: Wenn alle Personen im Chatroom die Nachricht erhalten haben, möchte ich dem Besitzer des Nachrichtenstatus "Received" senden, damit er das Doppeltickersymbol anzeigen kann. Wie übertragen Sie jedoch einen bestimmten Client?Phoenix Kanäle: senden Push an einen bestimmten Client
4
A
Antwort
3
Sie können dies pro Benutzer über Thema lösen, kann dies leicht durch Musterabgleich implementiert werden, beachten Sie die Sicherheitsüberprüfung auch:
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
Wie Sie den Benutzer von Repo.get
gespeichert haben würde, wenn der Benutzer die Verbindung Buchse an:
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
Und schließlich können Sie Nachrichten an einen bestimmten Benutzer aus der Fassung Kontext senden als:
YourAll.Endpoint.broadcast user_topic, "message", %{details: "etc"}
Um die Leistung zu testen, ist dies eine very informative session in der Gary Rennie zeigt, wie WebSockets mit Tsung Tool Benchmark.
Verwandte Themen
- 1. SignalR Push-Benachrichtigung an bestimmten Client mit MVC4
- 2. C# -Tcpclient-Client Nachricht an einen anderen Client senden
- 3. Wie können Sie Daten an einen Webseiten-Client senden?
- 4. socket.io und node.js, um Nachricht an bestimmten Client zu senden
- 5. Python Tornado WebSocket Server Nachricht an bestimmten Client senden
- 6. Senden Push-Benachrichtigung an alle Benutzer Phonegap
- 7. So senden Sie eine Parse Push-Benachrichtigung an einen bestimmten Benutzer
- 8. socket.io: Nachricht an bestimmten Raum senden (Clientseite)
- 9. Push-Nachricht aus dem Socket in Django-Kanäle
- 10. Ionic Push - Senden an externe IDs
- 11. Node.js: Socket.io in einer express.js-Route verwenden, um eine Nachricht an einen bestimmten Client zu senden
- 12. Jwebsocket: So senden Sie die Anfrage an einen bestimmten Client mit Name
- 13. Senden an einen bestimmten Client, der die Anfrage socket.io gestartet hat. Erhalten SocketId in Router
- 14. Senden von Daten an einen bestimmten Client durch den Windows-Benutzernamen des Clients mit SignalR
- 15. Binden des Sicherheitstokens an einen bestimmten Client-Computer
- 16. Senden Push-Benachrichtigungen an meine App-Benutzer
- 17. Phoenix Presence track Benutzer über mehrere Kanäle mit wechselnden Meta
- 18. Senden von Bildern über WhatsApp an einen bestimmten Empfänger (Android)
- 19. django Kanäle message.reply_channel kein Attribut senden
- 20. Nachricht an bestimmten Client über Sockets
- 21. Azure mobiler Service gesendet Push-Benachrichtigung an bestimmten IOS Benutzer
- 22. Client Benachrichtigung, sollte ich einen AJAX Push oder Poll verwenden?
- 23. Wie eine Nachricht an einen Client mit Socket.io
- 24. So senden Sie eine Nachricht von einem Phoenix Controller an einen Kanal?
- 25. Intelligentere Art, Push-Benachrichtigungen an Geräte zu senden
- 26. Wie kann ich Push-Benachrichtigungen von meiner App per Knopfklick an einen anderen einzelnen Benutzer senden?
- 27. Phoenix Channel sendet Nachrichten von einem Client außerhalb des Projekts
- 28. Senden Push-Benachrichtigung von PHP an Android-App
- 29. Postanforderung an einen Server senden
- 30. Ionic Push an bestimmte Benutzer von Ionic.io
Überprüfen Sie diese Frage: http://stackoverflow.com/questions/37373766/phoenix-return-ecto-query-results-to-a-specific-client/37375057#37375057 – simo
@simo Die Frage ist ein bisschen aus , weil Client A die Nachricht sendet und die Nachricht ebenfalls empfängt. Was ich brauche ist: Client A sendet die Nachricht und nur Client B erhält eine Rückmeldung – Nomad
Ich denke, es ist eine gute Idee, ein Thema nur für den Client B zu widmen, dann können Sie zu diesem Thema senden, sonst weiß ich nicht wie Einen bestimmten Benutzer ausschließen, siehe hier: http://stackoverflow.com/questions/37279779/how-to-exclude-some-users-when-broadcast – simo