wie Nachricht senden, um insbesondere websocket-Verbindung mit java-server
Ich bin neu in WebSockets.
Habe ich bereits eine einfache server-client-chat in WebSockets.
Und jetzt versuche ich, um client-server-client chat-Anwendung.
Ich habe eine Frage, die in der java-server wie können wir eine Nachricht senden, die insbesondere die WebSocket-Verbindung.
Wenn Benutzer A eine Nachricht senden möchten, um Benutzer-B.
Dann, wie Schaffe ich es, die Benutzer-B ist die Verwendung dieser oder diese Verbindung oder senden Sie eine Nachricht an diese Verbindung?
Ich bin auf der Suche, zu viel für diese auf google, aber konnte nicht finden, alles gute.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie die Gestaltung einer Architektur für das.
Wenn ein client stellt eine Verbindung mit dem server (öffnet die WebSocket), der server hat um die Verbindung zu halten irgendwo (wie auch immer Sie sind, identifizieren eine bestimmte Verbindung mit dem Java-backend du verwendest) in eine Datenstruktur, wird davon abhängen, was Sie zu tun versuchen. Eine gute id wäre eine ID, die der Benutzer sieht (wie einen Spitznamen, die nicht bereits abgeholt von einem anderen peer eine Verbindung zum gleichen server). Sonst, verwenden Sie einfach das socket-Objekt einen eindeutigen Bezeichner und, wenn mit anderen Benutzern über das frontend, assoziieren Sie mit Ihren eindeutigen Bezeichner, so dass ein client eine Nachricht senden kann, um einen bestimmten peer.
Einen
HashMap
wäre eine gute Wahl für eine Daten-Struktur, wenn ein client zum chatten mit anderen spezifischen client, wie ordnen Sie die einzigartige ID von einem client auf den socket und finden Sie einen Eintrag in O(1) in eine hash-Tabelle.Wenn Sie wollen broadcast-Nachricht von einem client an alle anderen clients, obwohl ein
HashMap
funktioniert auch Recht gut (mit etwas wieHashMap.Werte()
), können Sie mit einem einfachenList
senden der eingehenden Nachricht an alle verbundenen clients außer den ursprünglichen Absender.Natürlich möchten Sie auch entfernen Sie einen client aus der Daten-Struktur, wenn Sie verlieren, die Verbindung mit ihm, die ist einfach über einen WebSocket (Java-framework, die Sie verwenden sollten, rufen Sie zurück, wenn ein socket geschlossen).
Hier ist ein (fast vollständiges) Beispiel für die Verwendung einer Jetty 9 WebSocket (und das JDK 7):
Der code ist selbsterklärend. Über JSON-Formatierung und Analyse, Bootsanleger, hat einige interessante utilities innerhalb Paket
org.eclipse.jetty.util.ajax
.Beachten Sie auch, dass wenn Ihr WebSocket-server-framework ist nicht thread-sicher, die Sie benötigen, um die Daten zu synchronisieren Struktur, um sicherzustellen, dass keine Beschädigung von Daten (hier
MyWebSocket.sockets
).