Chat-Protokoll

sequenceDiagram Client 1->>Server: /connect Server-->>Client 1: /error Server-->>+Client 1: /success Server-->>other Clients: /joined loop Chat/asynchron Client 1->>Server: /all Server->>other Clients: /public Client 1->>Server: /@ Server-->>other Clients: /private end Client 1->>Server: /disconnect deactivate Client 1 Server->>other Clients: /left

Das Protokoll ist Text-basiert und verwendet einen TCP-Socket auf Port 1291.

Im folgenden Diagramm ist der zeitliche Ablauf einer Chat-Session dargestellt. Die Mitteilungen connect-message und disconnect-message stellen zwingend die erste resp. letzte Aktion eines Clients dar. Die anderen Mitteilungen können in beliebiger Reihenfolge dazwischen auftreten.

Sequenz-Diagramm Chat-Protokoll

Mitteilungen von Client zu Server

connnect-message
/connect <nickname>
Muss als erste Mitteilung unaufgefordert übermittelt werden und setzt den nickname[^usernamen]
Beispiel: /connect Elia
disconnect-message
/disconnect
Der Server trennt darauf die Verbindung zum Client
Beispiel: /disconnect
all-message
/all gefolgt vom Mitteilungs-Text
Mitteilung wird an alle anderen Chat-Teilnehmer verschickt
Beispiel: /public Ich liebe Kaffee
at-message
/@<username> gefolgt vom Mitteilungs-Text
Mitteilung wird nur an den Chat-Teilnehmer verschickt
Beispiel: /@elia Ich liebe Kaffee

Mitteilungen von Server zu Client

error-message
/error gefolgt vom Error-Text
Error-Nachricht bei erfolgloser Connect-Anfrage
Beispiel: /error Der gewünschte Benutzername existiert bereits
success-message
/success gefolgt vom Willkommens-Text
Erfolgs-Nachricht nach erfolgreichem Chat-Beitritt
Beispiel: /success Willkommen im Chat
joined-message
/joined <username>
Nachricht an andere Clients bei Beitritt neuer Chat-Teilnehmer
Beispiel: /joined Elia
public-message:
/public <username> gefolgt vom Mitteilungs-Text
Mitteilung an alle Chat-Teilnehmer von <username>
Beispiel: /public Elia Ich liebe Kaffee
private-message
/private <username> gefolgt vom Mitteilungs-Text
Mitteilung nur an diesen Client von <username>
Beispiel: /private Elia Ich liebe Kaffee
left-message
/left <username>
Mitteilung an andere Clients bei Verlassen eines Chat-Teilnehmers
Beispiel: /left Elia