Websockets

Willemers Informatik-Ecke

Die Bücher des Autors:
C++ Der Einstieg
Python (Amazon)
Java
Linux-Server für Einsteiger
Coding for fun mit C++
Die Einführung von Websockets kommt mit HTML5. Es ermöglicht eine schnelle Kommunikation, die vom Server zum Client läuft, der zuvor eine HTTP-Anfrage gestellt hat. In den meisten Fällen werden die Websocket-Verbindungen von JavaScript genutzt, können aber von jeder anderen Programmiersprache auch genutzt werden.

Anlegen eines Websockets

Die folgenden Sourcen sind JavaScript, finden sich aber auch in anderen Programmiersprachen wieder.
WebSocket WebSocket(in DOMString url, in optional DOMString protocols);
WebSocket WebSocket(in DOMString url, in optional DOMString[] protocols);
Die url beginnt mit ws:// oder wss://. ws steht für Websocket, wss für secure Websocket. Der nachfolgende Teil bestimmt die Adresse des Servers.

Im zweiten Parameter werden die Protokolle als Array von Strings oder als ein String mit einem Array von Protokollen beschrieben.

Der Websocket wird eröffnet und kann mit Events versehen werden.

Eventabhandlung

Das Eintreffen von Nachrichten, Fehlern, Öffnen und Schließen werden dem Programm per Event-Handling mitgeteilt.

Senden und Schließen

Mit dem Aufruf send() können Nachrichten an den Gegenüber gesandt werden. Eine Verbindung kann durch den Aufruf von close() geschlossen werden.

Beispielprogramm

Ein kleines Beispiel für den Aufbau und die Behandlung von Websockets in JavaScript.

var connection = new WebSocket('ws://meinserver.de/webecho', ['soap', 'xmpp']);

connection.onopen = function () {
    // Die Verbindung steht!
	// Nun kann per connection.send()
	// eine Nachricht an den Server gesendet werden.
    connection.send('Hallo!');
};

connection.onerror = function (error) {
  console.log('Fehler: ' + error);
};

connection.onmessage = function (e) {
  console.log('Nachricht empfangen: ' + e.data);
};
Websocket-Nachrichten werden mit einem 0x00-Byte eingeleitet und mit einem 0xFF-Byte abgeschlossen.

C++ Implementierung:

Java Implementierung:


Homepage (C) Copyright 2016 Arnold Willemer