Best Practice Architektur WebSocket Server

HolyFUT

Mitglied
Hallo zusammen,

schon wieder eine neue Frage von mir ;D

Ich stelle mir gerade die Frage welche Möglichkeiten und Optionen es gibt seine Architektur für seinen WebSocket Server aufzubauen. In meinem Fall benutze ich die Jakarta EE API und den Tyrus Server zur Erstellung eines WebSocket Server. Ein kurzes Vorwort: Ich arbeite mit Java und WebSocket seit gut 4-5 Tagen, also ist das Gebiet für mich auch völlig neu und weiß auch noch gar nicht was für Möglichkeiten ich habe :)

Aktuell, so habe ich es bisher gelernt, erstelle ich meine Endpunkte über Annotations.

Erste Frage: Wie gehe ich mit Endpunkten in komplexeren Projekten um? Ist es Best Practice, dass es immer nur den einen Endpunkt gibt und man navigiert anhand des Requests (zB das JSON gibt den Namen des Task wieder und dies wird im Server aufgelöst) zwischen Klassen umher? Oder ist es Best Practice, dass man für verschiedene Aufgaben einen separaten Endpunkt zur Verfügung stellt?

Ein folgendes Beispiel: Ich habe einen Endpunkt /start der dafür sorgt, dass mein Client identifiziert und gespeichert wird. Vielleicht wird sogar auch ein Token erstellt, um den Client zu autorisieren weitere Aufgaben meines Server aufrufen zu können.

Der Endpunkt /start muss in dem Fall immer präsent sein, denn es muss immer eine aktive Verbindung existieren, so dass der Client jedes mal Notification (zB über das Wetter) erhält. Um die weiteren Aufgaben, die der Client vom Server anfragt, zu bearbeiten fallen mir folgende zwei Szenarien ein:

1. Die Verbindung zu /start bleibt bestehen und behält die unique Daten um weitere Anfragen vom Client zu identifizieren. Allerdings beantwortet dieser Endpoint keine weiteren Fragen mehr, sondern dient in dem Fall als Wrapper. Er gibt Client Informationen wieder wie zB Token, UserObject (das man dann über Aufgaben befüllt), uvm. Aufgaben werden, insofern der /start Endpoint besteht, über das aufrufen der jeweiligen Endpoints realisiert und prüfen dann die bestehende Verbindung zum /start Endpoint und identifizieren den Client mithilfe der Informationen die der Wrapper bereitstellt

2. Die Verbindung zu /start bleibt nachwievor bestehen, allerdings sendet der Client immer eine Anfrage an diesen Endpoint und übergibt in seiner Anfrage, um zB. einen Nutzer zu registrieren, ein JSONObject mit den Zugangsdaten und dem Klassennamen die aufgerufen werden muss. Der /start Endpoint wertet die Anfrage aus und arbeitet damit weiter. In dem Fall ruft er die Klasse aus, die dafür zuständig den Nutzer in einer Datenbank einzuspeichern.

Welchen Weg würdet ihr einschlagen und wieso? Welche Wege gibt es noch die ich berücksichtigen sollte? Um Feedback wäre ich sehr dankbar! :D

Dann noch mal eine allgemeine Frage: Von wo kommt die Session ID die der Server bei einer aktiven Verbindung ausgeben kann? Erstellt der Server eine unique ID für die aktuelle Verbindung oder wird eine Session ID über den TLS-Handshake ausgetauscht? Bei letzterem: wie wird sie erstellt und kann ich damit einen Client pro Endpoint identifizieren? Zum Beispiel habe ich zwei Endpoints: Client 1 verbindet sich mit Endpoint A. Kann ich mittels der SESSION ID jetzt prüfen ob der selbe Client eine Verbindung zu Endpoint B hat?
 

HolyFUT

Mitglied
Moin, ich habe mich mit einem Freund ausgetauscht. Und zwar habe ich dadurch erfahren, dass die Anfrage in seinen Projekten über packets-id gesteuert werden. Die Packet-ID wird empfangen, anschließend vom Server ausgewertet und dann wird der entsprechende Handler/Servicepunkt angerufen und vom Server executed.

Was haltet ihr von der Idee? Tatsächlich habe ich es auch in einem anderen, größeren, WebSocket Server Projekt gesehen. Vorteil ist, dass man hier nicht x-beliebige Routen zur verfügung stellt die theoretisch ohne weiteres aufgerufen werden können, bei Packet-ID ist die Hürde die entsprechende ID herauszufinden. Und ich denke dass das ganze performanter ist, weil wir hier nicht mehr verschiedene Endpunkte ansprechen und URL Strings hin und her werfen, sondern nur noch zentral mit einem integer arbeiten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Erste Schritte Sinvolle Architektur und paketübergreifendes Arbeiten Java Basics - Anfänger-Themen 2
G Projekt architektur (implementierung) Java Basics - Anfänger-Themen 3
G Schach in Java - Allgemeine Frage zur Architektur Java Basics - Anfänger-Themen 7
S3CR3T Architektur der Software Java Basics - Anfänger-Themen 6
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
P MVC Programm Module Architektur Java Basics - Anfänger-Themen 2
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4
S Hilfe! NullPointerException und Architektur Problem. Java Basics - Anfänger-Themen 3
Q Beste Komponenten für 3-Schichten-Architektur gesucht Java Basics - Anfänger-Themen 7
T Fernsteuerung mittels Sockets (Architektur okay?) Java Basics - Anfänger-Themen 4
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
Phash Websocket abfragen Java Basics - Anfänger-Themen 1
L Erste Schritte Help with websocket protocol implementation Java Basics - Anfänger-Themen 5
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
A Server - Client Nachrichtenaustausch über Eventbus Java Basics - Anfänger-Themen 12
FireHorses Benutzernamen aus PrivateChannel(Interaction) auf Server bringen Java Basics - Anfänger-Themen 0
S Server Java Basics - Anfänger-Themen 4
S Server Java Basics - Anfänger-Themen 3
D Verbesserungsvorschläge zur Struktur einer Client Server Desktop Chat App Java Basics - Anfänger-Themen 24
D Unerwartetes Verhalten bei Client Server Chat App Java Basics - Anfänger-Themen 12
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
M CS GO Server mit Java steuern Java Basics - Anfänger-Themen 3
K Verständnisfrage Server/Client BufferedReader, PrintWriter Java Basics - Anfänger-Themen 2
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
A Client-Server Kommunikation Java Basics - Anfänger-Themen 3
F Mehrere Server Sockets in einer Anwendung Java Basics - Anfänger-Themen 9
R Antwort vom Server an mehreren Clients senden Java Basics - Anfänger-Themen 3
W Netwerkprogrammierung und Http Server Java Basics - Anfänger-Themen 10
S Server - für jeden Client ein Serverthread Java Basics - Anfänger-Themen 2
G sql server connection mit windows authentication Java Basics - Anfänger-Themen 2
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
L Erste Schritte Erste Versuche mit Server und Client Java Basics - Anfänger-Themen 7
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
U Erste Schritte Server will nicht übergebenes Objekt speichern Java Basics - Anfänger-Themen 5
B IP Adresse von Wildfly Server Java Basics - Anfänger-Themen 1
cezary Server läßt sich nicht starten Java Basics - Anfänger-Themen 2
J Java Server Pages - Verständnisfrage Java Basics - Anfänger-Themen 2
I Print Client -> Server -> Client? Java Basics - Anfänger-Themen 1
I lokales Programm mit Client/Server Programm kommunizieren Java Basics - Anfänger-Themen 3
H java.lang.NoClassDefFoundError Run as>> Run on Server Java Basics - Anfänger-Themen 2
F String zu einem Server senden Java Basics - Anfänger-Themen 4
N Server Zeit zur lokalen Zeit setzen. Java Basics - Anfänger-Themen 0
J TCP MultiThreaded Server und Client - irgendwo ist der Fehler, aber ich find ihn nicht Java Basics - Anfänger-Themen 3
I ical - Datei auf Server ablegen und Kalender abbonieren Java Basics - Anfänger-Themen 0
T Eclipse - GlassFish Server!? Java Basics - Anfänger-Themen 1
I Java Server Faces mit Glassfish Webseite veröffentlichen Java Basics - Anfänger-Themen 4
M Input/Output tcp-Server mit statischer Parallelität Java Basics - Anfänger-Themen 7
G Multiple Clients and one Server Java Basics - Anfänger-Themen 2
K Java Client > Python Server Java Basics - Anfänger-Themen 0
F jabva 7.21 läuft nicht auf windows server 2012? Java Basics - Anfänger-Themen 9
D Socket ---> Server Socket worauf muss ich achten? Java Basics - Anfänger-Themen 2
S Java - Client/Server mit Stomp kurze Frage Java Basics - Anfänger-Themen 0
I JDK SERVER -jar stoppen Java Basics - Anfänger-Themen 5
Screen Wie Propertydatei im Server beschreiben? Java Basics - Anfänger-Themen 7
K threaded server Java Basics - Anfänger-Themen 18
E Client Server Java Basics - Anfänger-Themen 12
Q Datenbank nicht über separaten Server Java Basics - Anfänger-Themen 4
H Einfache Client/Server-Kommunikation Java Basics - Anfänger-Themen 16
L Chat server Java Basics - Anfänger-Themen 4
O Server Client Problem Java Basics - Anfänger-Themen 2
B Java Server Side Java Basics - Anfänger-Themen 14
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
L Server pingt Client und fordert Info Java Basics - Anfänger-Themen 2
G JObjekte dynamisch vom Server erzeugen lassen Java Basics - Anfänger-Themen 4
A Server logs auslesen Java Basics - Anfänger-Themen 6
Z Threads, Server, GUI Java Basics - Anfänger-Themen 4
R Server/Client für Spiel Java Basics - Anfänger-Themen 2
M Java class auf Server starten Java Basics - Anfänger-Themen 5
U Java-Programm auf einem Server starten Java Basics - Anfänger-Themen 33
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
X Applet - Client/Server Java Basics - Anfänger-Themen 2
I Interface Comparable für Server-Item-Interface Java Basics - Anfänger-Themen 12
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
S .Bat Server von .java Starten Java Basics - Anfänger-Themen 5
L Server mit mehreren Clients Java Basics - Anfänger-Themen 25
L Bild versenden über Client/Server Java Basics - Anfänger-Themen 10
S Klassen Server und Client Java Basics - Anfänger-Themen 3
M Client - DB-Server Struktur Java Basics - Anfänger-Themen 7
M daytime-Server Port 13 Java Basics - Anfänger-Themen 2
U Probleme mit Server-Client implementierung Java Basics - Anfänger-Themen 5
O (von Applet) daten an Server übergeben Java Basics - Anfänger-Themen 4
W mehrere clients auf einem server Java Basics - Anfänger-Themen 2
R Server-Daten sichern/verschlüsseln Java Basics - Anfänger-Themen 10
N Applets: Objekte vom Server laden Java Basics - Anfänger-Themen 4
G Server-Client Kommunikation Java Basics - Anfänger-Themen 3
V pfad.exists() gilt nicht für "//server/a/xyz.jpg"? Java Basics - Anfänger-Themen 12
F SQL Server aus Umlaute werden Fragezeichen Java Basics - Anfänger-Themen 4
S FTP Server Java Basics - Anfänger-Themen 3
P Application Server Java Basics - Anfänger-Themen 3
B Object an Server senden, Server antwortet mit objekt? Java Basics - Anfänger-Themen 7
C Bilder von Server zu Server kopieren über Webdav(Sardine) Java Basics - Anfänger-Themen 5
H Java-Server mit Browser ansprechen Java Basics - Anfänger-Themen 19
M Standard-Klassen auf Server nicht verfügbar Java Basics - Anfänger-Themen 7
Spin Server Location is not an Sun Java System Application Server 8.2 Java Basics - Anfänger-Themen 2
Dit_ Daten vom Server in einer Schleife Java Basics - Anfänger-Themen 4
S In Eclipse relativen Pfad fuer Tomcat Server erstellen..? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben