WebSocket auf Kotlin: Echtzeitanwendungen von A bis Z

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

WebSocket auf Kotlin: Erstellung von Echtzeitanwendungen von Grund auf



Moderne Webanwendungen erfordern zunehmend eine sofortige Datenübertragung zwischen Client und Server. Traditionelles HTTP, das nach dem „Anfrage-Antwort"-Prinzip funktioniert, ist für Aufgaben, die eine ständige bidirektionale Kommunikation erfordern – Chats, Online-Spiele, Börsenkurse oder Echtzeit-Benachrichtigungen – nicht geeignet. Genau hier kommt das Protokoll WebSocket ins Spiel. In diesem Artikel werden wir uns ansehen, wie man Echtzeitanwendungen auf Kotlin mit WebSocket erstellt, von der grundlegenden Theorie bis zu praktischen Beispielen.



Kotlin ist aufgrund seiner Prägnanz, Sicherheit und vollständigen Kompatibilität mit dem Java-Ökosystem eine ausgezeichnete Wahl für die Backend-Entwicklung. Als Hauptframework werden wir Ktor verwenden – ein modernes asynchrones Framework für Kotlin, das integrierte WebSocket-Unterstützung bietet.



Was ist WebSocket und warum wird es benötigt?



WebSocket ist ein Protokoll, das eine vollduplexe (bidirektionale) Kommunikation zwischen Client und Server über eine einzige permanente TCP-Verbindung ermöglicht. Im Gegensatz zu HTTP, bei dem der Client immer der Initiator der Anfrage ist, erlaubt WebSocket dem Server, jederzeit eigenständig Daten an den Client zu senden.



Hauptvorteile von WebSocket:

  • Niedrige Latenz: Kein Overhead für den Aufbau einer neuen Verbindung für jede Nachricht.
  • Effizienz: Minimaler Verwaltungsverkehr (nur 2 Bytes pro Nachricht nach Verbindungsaufbau).
  • Permanente Verbindung: Der Server kann Daten in Echtzeit ohne Abfragen durch den Client senden.


WebSocket ist ideal geeignet für:

  • Online-Chats und Messenger
  • Gemeinsame Dokumentenbearbeitung
  • Börsen- und Finanzkurse
  • Mehrspieler-Spiele
  • Push-Benachrichtigungen und Überwachung


Einrichtung eines Ktor-Projekts für WebSocket



Bevor wir Code schreiben, muss das Projekt eingerichtet werden. Am einfachsten geht das über IntelliJ IDEA mit dem Ktor-Plugin oder manuell über Gradle.



Schritt 1: Projekterstellung

Erstellen Sie ein neues Gradle-Projekt mit Kotlin (JVM). Fügen Sie in der Datei build.gradle.kts die folgenden Abhängigkeiten hinzu:



plugins {    kotlin("jvm") version "1.9.22"    id("io.ktor.plugin") version "2.3.7"}

application { mainClass.set("ApplicationKt")}

dependencies { implementation("io.ktor:ktor-server-core:2.3.7") implementation("io.ktor:ktor-server-netty:2.3.7") implementation("io.ktor:ktor-server-websockets:2.3.7") implementation("ch.qos.logback:logback-classic:1.4.14")}


Schritt 2: Grundlegende Serverstruktur

Erstellen wir eine Datei Application.kt und schreiben einen minimalen WebSocket-Server:



import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.websocket.*import io.ktor.websocket.*import kotlinx.coroutines.delay

fun main() { embeddedServer(Netty, port = 8080) { install(WebSockets) webSocket("/chat") { send("Willkommen im Chat!") for (frame in incoming) { if (frame is Frame.Text) { val text = frame.readText() send("Sie haben geschrieben: $text") println("Empfangen: $text") } } } }.start(wait = true)}


Dieser Code startet einen Server auf Port 8080, der WebSocket-Verbindungen unter der Adresse /chat akzeptiert. Bei der Verbindung erhält der Client eine Begrüßungsnachricht, und der Server antwortet auf jede Textnachricht mit einem Echo.



Erstellung eines erweiterten Chats mit Räumen



Kommen wir nun zu einem komplexeren Beispiel – mehr

Blogs

Buchempfehlungen