Um einige Leute davon zu überzeugen, von der alten Schule zu wechseln, muss ich eine Chat-Demo-Anwendung erstellen, die mehr als 10K gleichzeitige Verbindungen mit Java (wie Node.Js ) verwaltet Sachen).
Ich habe Netty 5.0 getestet, was großartig ist, aber viel Arbeit erfordert; Auf der anderen Seite ist Jetty 9.3 großartig, aber im Vergleich zu anderen Konkurrenten langsam.
Nach einigem Suchen habe ich das Vert.x 3-Toolkit, das auf Netty basiert, mit einer Fülle toller Tools gefunden (das Rad muss nicht neu erfunden werden), habe ich Ich habe die Beispiele in git gesehen und konnte einen Websocket Server aufbauen.
%Vor%Da ich neu in der Welt von Vert.x bin, konnte ich nicht herausfinden, wie ich verbundene Benutzer damit umgehen kann. Normalerweise ist der alte Weg, etwas wie:
zu verwenden %Vor%Wenn eine Verbindung hergestellt ist, überprüfe ich, ob sie existiert; Wenn nicht, füge ich es als neuen Eintrag hinzu und mache einige Funktionen, um die Sammlung zu senden, zu senden, durch die Sammlung zu laden und so weiter.
Meine Frage ist, ob Vert.x 3 etwas mit Verbindungen zu tun hat, um sie zu verfolgen und diejenigen zu entfernen, die gegangen sind (Ping-Pong), Broadcasts usw. oder sollte ich sie von Grund auf mit Cookies implementieren , Sitzung, ....)
Ich konnte mit Vert.x 3 kein echtes Beispiel finden.
Grundsätzlich stellt der Umfang des websocketHandler eine Verbindung dar. In Ihrem Beispiel ist dies Ihre anonyme Klasse. Ich habe einen kleinen Websocket-Chat erstellt Beispiel , in dem ich den Vert.x-Ereignisbus verwende, um die Nachrichten an alle Clients zu verteilen .
In der Startmethode des Servers behandeln wir die Websocket-Verbindungen. Sie können den closeHandler implementieren, um die Clienttrennung zu überwachen. Es gibt auch Handler für Ausnahmen, Ping-Pong usw. Sie können eine bestimmte Verbindung identifizieren, indem Sie die textHandlerID verwenden, aber Sie haben auch Zugriff auf die entfernte Adresse.
%Vor%Das Client-Beispiel wird ebenfalls in Java geschrieben. Es druckt nur alle empfangenen Nachrichten auf der Websocket-Verbindung zur Konsole. Nach der Verbindung sendet es eine Nachricht.
%Vor%