Netzwerkprogrammierung in JavaScript: Von Sockets bis WebSocket

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum JavaScript in der Netzwerkprogrammierung?

Einst war JavaScript nur eine Sprache für Button-Animationen und Formularvalidierung. Heute ist es ein äußerst mächtiges Werkzeug zur Erstellung von Netzwerkanwendungen. Netzwerkprogrammierung in JavaScript öffnet Türen zur Echtzeitwelt: Chats, Online-Spiele, Daten-Streaming, Überwachungssysteme und sogar eigene Webserver.

In diesem Artikel werden wir nicht langweilig die Dokumentation wiederholen. Wir gehen den Weg von einer einfachen HTTP-Anfrage bis zu einer vollwertigen WebSocket-Verbindung. Sie werden sehen, wie Node.js eine Browsersprache in eine leistungsstarke Netzwerk-Engine verwandelt. Bereit? Los geht's!



Grundlagen: HTTP und Node.js-Module

Jede Netzwerkprogrammierung in JavaScript beginnt mit dem Verständnis von Protokollen. Das bekannteste ist HTTP. Im Browser verwenden Sie fetch() oder XMLHttpRequest, aber die Serverseite erfordert einen anderen Ansatz.



Einen einfachen HTTP-Server erstellen

Node.js bietet das integrierte Modul http. Hier ist ein minimales Beispiel, das auf jede Anfrage mit "Hallo Welt!" antwortet:

const http = require('http');

const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hallo Welt! Netzwerkprogrammierung in JavaScript funktioniert!');});

server.listen(3000, '127.0.0.1', () => { console.log('Server gestartet unter http://127.0.0.1:3000/');});

Führen Sie diesen Code mit node server.js aus und öffnen Sie den Browser. Sie sehen unsere Nachricht. Einfach, oder? Aber das ist erst der Anfang. Die wahre Magie beginnt, wenn wir mit Sockets arbeiten.



Arbeiten mit TCP-Sockets in JavaScript

HTTP ist ein Anwendungsprotokoll, das auf TCP aufbaut. Wenn Sie die volle Kontrolle über die Datenübertragung benötigen, verwenden Sie JavaScript Sockets. In Node.js ist dafür das Modul net zuständig.



TCP-Server: Daten empfangen

Stellen Sie sich vor, Sie schreiben einen einfachen Echo-Server. Der Client verbindet sich, sendet eine Nachricht, der Server sendet sie zurück. So sieht das aus:

const net = require('net');

const server = net.createServer((socket) => { console.log('Client verbunden');

socket.on('data', (data) => { console.log('Empfangen:', data.toString()); socket.write('Echo: ' + data.toString()); });

socket.on('end', () => { console.log('Client getrennt'); });});

server.listen(8080, () => { console.log('TCP-Server hört auf Port 8080');});

Jetzt schreiben wir einen Client für diesen Server. Client-Server in JavaScript ist eine bidirektionale Kommunikation:

const net = require('net');

const client = net.createConnection({ port: 8080 }, () => { console.log('Mit Server verbunden'); client.write('Hallo, Server!');});

client.on('data', (data) => { console.log('Serverantwort:', data.toString()); client.end();});

client.on('end', () => { console.log('Vom Server getrennt');});

Starten Sie zuerst den Server, dann den Client. Sie werden sehen, wie die Daten hin und her reisen. Das ist die Grundlage aller JavaScript-Netzwerkprotokolle.



WebSocket: Echtzeit ohne Verzögerungen

HTTP und TCP sind gut, aber sie haben ein Problem: Um neue Daten zu erhalten, muss der Client ständig Anfragen stellen (Polling). Das ist ineffizient. WebSocket in JavaScript löst dieses Problem – nach dem Verbindungsaufbau kann der Server selbst jederzeit Daten senden.



WebSocket auf Node.js (Bibliothek ws)

Installieren Sie die Bibliothek: npm install ws

Server:

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8081 });

wss.on('connection', (ws) => { console.log('WebSocket-Client verbunden');

ws.on('message', (message) => { console.log('Empfangen:',

Blogs

Buchempfehlungen