Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:netzwerk:websocket

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:netzwerk:websocket [2021/06/29 15:16] Martin Pabstapi:documentation:netzwerk:websocket [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== WebSocket und WebSocketClient ====== ====== WebSocket und WebSocketClient ======
 +===== Die Klasse WebSocket =====
 {{ :api:documentation:netzwerk:pasted:20210629-061427.png?500}} {{ :api:documentation:netzwerk:pasted:20210629-061427.png?500}}
-<WRAP center round info 60%>+<WRAP left round tip 40%> 
 +Auf dieser Seite findest Du eine Beschreibung aller API-Methoden zur Netzwerkprogrammierung. Falls Du neu in das Thema einsteigst, ist diese Seite vielleicht nicht unbedingt geeignet, sondern eher [[api:documentation:netzwerk:chat|das Video, in dem ich Schritt für Schritt erkläre, wie man ein einfaches Chat-Programm erstellt]]. 
 +</WRAP> 
 + 
 +<WRAP left round info 60%>
 Die Klasse ''WebSocket'' bietet Methoden, um mit anderen Rechnern in Echtzeit Daten auszutauschen, auf denen ebenfalls die Online-IDE läuft. Dadurch lassen sich zum Beispiel Netzwerkspiele erstellen. Hier die Methoden im einzelnen: Die Klasse ''WebSocket'' bietet Methoden, um mit anderen Rechnern in Echtzeit Daten auszutauschen, auf denen ebenfalls die Online-IDE läuft. Dadurch lassen sich zum Beispiel Netzwerkspiele erstellen. Hier die Methoden im einzelnen:
   * ''void open(String sessionCode, String nickName)'': \\ Startet die Verbindung mit dem Server. Den SessionCode kannst Du frei wählen. Mit allen anderen Clients Deiner Schule, die eine Verbindung mit demselben SessionCode aufbauen, kannst Du anschließend Daten austauschen. Auch der Nickname ist frei wählbar. Er ist für alle anderen Clients sichtbar.   * ''void open(String sessionCode, String nickName)'': \\ Startet die Verbindung mit dem Server. Den SessionCode kannst Du frei wählen. Mit allen anderen Clients Deiner Schule, die eine Verbindung mit demselben SessionCode aufbauen, kannst Du anschließend Daten austauschen. Auch der Nickname ist frei wählbar. Er ist für alle anderen Clients sichtbar.
Zeile 15: Zeile 20:
   * ''onOtherClientConnected(WebSocketClient otherClient)'': \\ Wird immer dann aufgerufen, wenn sich ein anderer Client unter Nutzung desselben sessionCodes mit dem Server verbunden hat.   * ''onOtherClientConnected(WebSocketClient otherClient)'': \\ Wird immer dann aufgerufen, wenn sich ein anderer Client unter Nutzung desselben sessionCodes mit dem Server verbunden hat.
   * ''void onOtherClientDisConnected(WebSocketClient otherClient)'': \\ Wird immer dann aufgerufen, wenn ein anderer Client unter Nutzung desselben sessionCodes die Verbindung mit dem Server beendet hat.   * ''void onOtherClientDisConnected(WebSocketClient otherClient)'': \\ Wird immer dann aufgerufen, wenn ein anderer Client unter Nutzung desselben sessionCodes die Verbindung mit dem Server beendet hat.
 +</WRAP>
  
  
 +===== Die Klasse WebSocketClient =====
 +<WRAP left round info 80%>
 +Die Methoden ''onClientsFound'', ''onOtherClientConnected'' und ''onMessage'' liefern jeweils als Parameter ''WebSocketClient''-Objekte mit. Diese enthalten die Daten des/der jeweiligen Client/s, die sie mit entsprechenden Getter-Methoden auch herausgeben:
 +  * ''getFirstName'' (Vorname)
 +  * ''getLastName'' (Familienname)
 +  * ''getUsername'' (Benutzername)
 +  * ''getNickname'' (Nickname)
 +Gehört ein Client zu einer mit ''findClient'' bzw. ''findClients'' gefundenen Gruppe, so erhältst Du mit ''getIndex()'' auch noch den Index des Clients innerhalb dieser Gruppe. Die Zuordnung der Indices sieht jeder Client gleich, so dass man so einen bestimmten Client (z.B. den mit Index 0) für besondere Aufgaben heranziehen kann (z.B. um Server-Rollen zu übernehmen). \\ \\ 
 +**Daten an einen Client senden** \\ 
 +Mit der Methode ''void send(String message, String messageType)'' kannst Du an einen bestimmten Client Daten senden. \\ \\ 
 +**UserData**
 +Stell' Dir vor, Du bekommst via ''onMessage(WebSocketClient sender, String message, String messageType)'' eine Nachricht von einem Client, z.B. die aktualisierten Koordinaten seiner Spielfigur. Dann muss das Programm anhand des ''WebSocketClient''-Objekts ''sender'' das Sprite ermitteln, das zur Spielerfigur gehört. Damit das möglichst einfach geht, kann man an jedes WebSocketClient-Objekt Daten anhängen:
 +  * ''setUserData(String schlüssel, Object wert)'' speichert das Objekt Wert (es kann zu einer **beliebigen** Klasse gehören!) unter dem angegebenen Schlüssel (er kann beliebig gesetzt werden) **im** WebSocketClient-Objekt.
 +  * ''Object getUserData(String schlüssel)'' liefert das zuvor unter dem angegebenen Schlüssel gespeicherte Objekt zurück.
  
 +<code java>
 +void onOtherClientConnected(WebSocketClient otherClient){
 +   Sprite s = new Sprite(100, 100, SpriteLibrary.ship_1, 0);
 +   otherClient.setUserData("Sprite", s);
 +}
  
 +void onMessage(WebSocketClient sender, String message, String messageType){ 
 +   Sprite s = (Sprite)sender.getUserData("Sprite"); 
 +   // s zeigt auf das zuvor gespeicherte Sprite. Jetzt kann - abhängig von den in message übermittelten Daten - z.B. seine Position gesetzt werden. 
 +
 +</code>
 </WRAP> </WRAP>
  
api/documentation/netzwerk/websocket.1624972615.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki