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 das Video, in dem ich Schritt für Schritt erkläre, wie man ein einfaches Chat-Programm erstellt.
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)
: void onOpen()
: onOpen()
können Daten mittels send
oder sendToAll
an andere Clients gesendet werden.void sendToAll(String message, String messageType)
: void close()
: void onClose()
: void onMessage(WebSocketClient sender, String message, String messageType)
: void findClients(int count)
: void findClients(String[] nicknames)
: void findClient(String nickname)
: onClientsFound(WebSocketClient[] clients, int ownIndex)
: onOtherClientConnected(WebSocketClient otherClient)
: void onOtherClientDisConnected(WebSocketClient otherClient)
:
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.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. }