Netzwerkprogrammierung mit TypeScript: 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

Netzwerkprogrammierung mit TypeScript: Von Sockets bis WebSocket

\n\n

Wenn wir über Netzwerkprogrammierung mit TypeScript sprechen, stellen wir uns oft komplexe verteilte Systeme, Echtzeit-Chats oder Spieleserver vor. Und das ist kein Zufall: TypeScript mit seiner strengen Typisierung und den Möglichkeiten der statischen Analyse macht die Entwicklung von Netzwerkanwendungen nicht nur sicher, sondern auch wirklich komfortabel.

\n\n

In diesem Artikel werden wir uns ansehen, wie man Client-Server-Anwendungen mit TypeScript erstellt, unter Verwendung der integrierten Node.js-Module net und dgram sowie Bibliotheken für die Arbeit mit WebSocket. Sie erhalten fertige Codebeispiele, die Sie sofort in Projekten einsetzen können.

\n\n

Warum TypeScript für Netzwerkprogrammierung?

\n\n

Viele Entwickler sind es gewohnt, JavaScript für das Backend zu verwenden, aber TypeScript Netzwerkprogrammierung bietet eine Reihe von Vorteilen:

\n\n
    \n
  • Datentypisierung — Sie definieren im Voraus die Struktur von Paketen und Nachrichten
  • \n
  • Autovervollständigung — die IDE schlägt Socket-Methoden und deren Parameter vor
  • \n
  • Weniger Fehler — der Compiler fängt Typenkonflikte bereits vor dem Start ab
  • \n
\n\n

Schauen wir uns ein reales Beispiel an. Stellen Sie sich vor, wir schreiben einen TCP-Server. In JavaScript würden Sie schreiben:

\n\n
const server = require('net').createServer(socket => {\n  socket.on('data', data => {\n    // data ist ein Buffer, das muss man bedenken\n  });\n});
\n\n

In TypeScript erhalten wir dagegen klare Typen:

\n\n
import * as net from 'net';\n\nconst server: net.Server = net.createServer((socket: net.Socket) => {\n  socket.on('data', (data: Buffer) => {\n    // Der Typ Buffer ist bekannt, wir arbeiten sicher\n  });\n});
\n\n

Das scheint eine Kleinigkeit zu sein, aber bei großen Projekten spart dieser Unterschied Stunden des Debuggens.

\n\n

Grundlagen: TCP-Server und -Client mit TypeScript

\n\n

Beginnen wir mit dem Klassiker — TCP. Wir erstellen einen einfachen Echo-Server, der dem Client das zurückgibt, was er erhalten hat.

\n\n

TCP-Server

\n\n
import * as net from 'net';\n\nconst PORT: number = 3000;\nconst HOST: string = '127.0.0.1';\n\nconst server: net.Server = net.createServer((socket: net.Socket) => {\n  console.log(`Client verbunden: ${socket.remoteAddress}:${socket.remotePort}`);\n\n  socket.on('data', (data: Buffer) => {\n    const message: string = data.toString().trim();\n    console.log(`Empfangen: ${message}`);\n    socket.write(`Echo: ${message}\\n`);\n  });\n\n  socket.on('end', () => {\n    console.log('Client getrennt');\n  });\n\n  socket.on('error', (err: Error) => {\n    console.error('Socket-Fehler:', err.message);\n  });\n});\n\nserver.listen(PORT, HOST, () => {\n  console.log(`TCP-Server gestartet auf ${HOST}:${PORT}`);\n});
\n\n

Beachten Sie: Wir haben alle Variablen typisiert — server, socket, data, err. Dies ermöglicht es uns zu sehen, welche Methoden für den Socket verfügbar sind, und versehentliche Fehler zu vermeiden.

\n\n

TCP-Client

\n\n
import * as net from 'net';\n\nconst client: net.Socket = new net.Socket();\n\nclient.connect(3000, '127.0.0.1', () => {\n  console.log('Mit Server verbunden');\n  client.write('Hallo, Server!');\n});\n\nclient.on('data', (data: Buffer) => {\n  console.log('Serverantwort:', data.toString());\n  client.destroy();\n});\n\nclient.on('close', () => {\n  console.log('Verbindung geschlossen');\n});
\n\n

Dieser Code kann in jedem Node.js-Projekt mit TypeScript ausgeführt werden. Installieren Sie einfach @types/node und kompilieren Sie.

\n\n

UDP: Wenn Geschwindigkeit wichtiger ist als Zuverlässigkeit

\n\n

Wenn Sie Daten ohne Verbindungsaufbau übertragen müssen (z. B. für Streaming oder Spiele), verwenden Sie UDP Sockets TypeScript. Das Modul dgram bietet alles Notwendige.

\n\n

UDP-Server

\n\n
import * as dgram from 'dgram';\n\nconst server: dgram.Socke                

Blogs

Buchempfehlungen