Socket.IO
# Socket.IO

Socket.IO ist eine JavaScript-Bibliothek für Echtzeit-Webanwendungen. Es ermöglicht bidirektionale Echtzeit-Kommunikation zwischen Webclients und Servern. Es besteht aus zwei Teilen: einer clientseitigen Bibliothek, die im Browser des Benutzers läuft, und einer serverseitigen Bibliothek für Node.js. Beide Komponenten haben eine nahezu identische API. Wie Node.js auch, ist es ereignisgetrieben.

Socket.IO verwendet primär das WebSocket-Protokoll mit zyklischem Abfragen als Ersatzoption, wobei es dafür dieselbe Schnittstelle bietet. Obwohl es auch als einfacher Wrapper für WebSocket verwendet werden kann, bietet es weitaus mehr Funktionen, einschließlich des Broadcastings an mehrere Sockets, Speichern von Daten, die mit dem jeweiligen Client verknüpft sind, und asynchrone E/A.

Es kann mit Hilfe des Paketmanagers npm installiert werden.

## Überblick

Socket.IO bietet Echtzeit-Analyse, binäre Datenströme, Sofortnachrichten und Zusammenarbeit an Dokumenten. Nennenswerte Nutzer sind unter anderen Microsoft Office, Yammer und Zendesk.

Socket.IO behandelt die Verbindung transparent. Es schaltet automatisch zum WebSocket-Protokoll um, falls dies möglich ist. Dadurch benötigt der Programmierer nur Kenntnisse von Socket.IO.

Socket.IO ist keine WebSocket-Bibliothek mit Ersatzoptionen für andere Echtzeitprotokolle. Es ist eine angepasste Implementierung eines Echtzeittransportprotokolls, aufbauend auf anderen Echtzeitprotokollen. Seine Protokollaushandlungsteile sorgen dafür, dass ein Client, der Standard-WebSocket unterstützt, nicht in der Lage ist, sich mit einem Socket.IO-Server zu verbinden. Und ein Socket.IO-implementierender Client kann nicht mit einem nicht-Socket.IO-basierten WebSocket oder Long Polling Comet-Server kommunizieren. Deshalb erfordert Socket.IO die Verwendung der Socket.IO-Bibliotheken sowohl auf dem Client als auch auf dem Server.

Ab Version 2.0 nutzt Socket.IO als zu Grunde liegende WebSocket-Bibliothek µWebSockets.

