6
0
Fork 0
7 Server Protokoll
Snoweuph edited this page 2025-02-19 09:30:05 +00:00

Server Protokoll

Die Client ⇿ Server Kommunikation erfolgt per Websockets.
Wir setzen auf mehrere Websockets, die wir in der weiteren Dokumentation als Channel oder Kanal bezeichnen werden.
Die Daten, die gesendete werden, sind in der weiteren Dokumentation als Nachrichten oder Messages bezeichnet.
Für die Messages, die über Channel gesendet werden, nutzen wir JSON, weil es die Lesbarkeit erhöht und sich leicht De/Serialisieren lässt.

Die Kommunikation über Websockets ist hier dokumentiert.


Der Grobe Aufbau eines Websockets sieht wie folgt aus:
sequenceDiagram
participant S as Server
participant C as Cient

C->>S: HTTP Anfrage an Socket für einen Handshake
C <<->> S: HTTP Handshake

C-->S: Downgrade zu TCP
loop Bis Verbindung Geschlossen
  C<<->>S:  Senden / Höhren
end

Wir haken uns in den HTTP Handshake ein.
In den HTTP Header geben wir ein custom Feld namens Authorization mit, welches einen JWT beinhalten muss.
Unser Modifizierter Handshake sieht wie folgt aus:

sequenceDiagram
participant S as Server
participant C as Cient

C->>S: HTTP Anfrage an Socket für einen Handshake
opt Invalider/Fehlender JWT
  S ->> C : Beendet die Verbindung
end
C <<->> S: Standard HTTP Handshake