WebSocket-Bibliothek Kotlin: ktor-client-websockets für Echtzeit

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-Bibliothek Kotlin: ktor-client-websockets



In der modernen Webentwicklung wird der Datenaustausch in Echtzeit immer häufiger benötigt: Online-Chats, Benachrichtigungen, Börsenkurse, Mehrspieler-Spiele. Für Kotlin ist eine der leistungsstärksten und nativen Bibliotheken für die Arbeit mit dem WebSocket-Protokoll ktor-client-websockets – Teil des Ktor-Ökosystems (Kotlin HTTP-Client).



In diesem Artikel werden wir im Detail besprechen, wie man WebSocket in Kotlin mit Ktor einbindet und verwendet. Sie erfahren, wie Sie die Bibliothek installieren, eine Verbindung herstellen, Nachrichten senden und empfangen sowie Fehler und Verbindungsabbrüche behandeln.



Was ist WebSocket und warum wird es benötigt?

WebSocket ist ein Protokoll, das eine dauerhafte bidirektionale Verbindung zwischen einem Client (z. B. einer Android-App oder einem Server) und einem Server herstellt. Im Gegensatz zu HTTP, bei dem der Client jedes Mal eine Anfrage initiiert, ermöglicht WebSocket dem Server, Daten sofort an den Client zu senden, sobald sie verfügbar sind. Dies ist ideal für:

  • Chats und Messenger;
  • Benachrichtigungen und Ereignis-Feeds;
  • Spiele und kollaborative Editoren;
  • Finanzticker und Trading.


Installation der Bibliothek ktor-client-websockets

Fügen Sie zunächst die Abhängigkeit zu Ihrer build.gradle.kts hinzu (Projekt auf Kotlin/JVM oder Kotlin Multiplatform).



// build.gradle.ktsdependencies {    implementation("io.ktor:ktor-client-core:2.3.7")    implementation("io.ktor:ktor-client-cio:2.3.7") // oder eine andere Engine    implementation("io.ktor:ktor-client-websockets:2.3.7")}


Wenn Sie Kotlin Multiplatform verwenden, stellen Sie sicher, dass Sie das Modul für jede Plattform hinzugefügt haben (z. B. ktor-client-okhttp für Android).



Erstellen eines WebSocket-Clients

Die Hauptklasse für die Arbeit mit WebSocket ist HttpClient mit dem Plugin WebSockets. Betrachten wir ein einfaches Beispiel für die Verbindung zu einem WebSocket-Server.



import io.ktor.client.*import io.ktor.client.plugins.websocket.*import io.ktor.websocket.*

suspend fun main() { val client = HttpClient { install(WebSockets) }

client.webSocket("ws://echo.websocket.org") { // Nachricht senden send(Frame.Text("Hallo, WebSocket!"))

// Antwort empfangen for (frame in incoming) { when (frame) { is Frame.Text -> { println("Empfangen: ${frame.readText()}") } else -> println("Anderer Frame-Typ: $frame") } } }

client.close()}


In diesem Code:

  1. Erstellen wir einen HTTP-Client mit WebSocket-Unterstützung.
  2. Stellen wir eine Verbindung zum Testserver ws://echo.websocket.org her.
  3. Senden wir eine Textnachricht.
  4. Lesen wir eingehende Frames und geben sie auf der Konsole aus.


Fehlerbehandlung und Verbindungsabbruch

In realen Anwendungen ist es wichtig, Ausnahmen korrekt zu behandeln und die Verbindung zu schließen. Verwenden Sie try-catch und finally.



import io.ktor.client.*import io.ktor.client.plugins.websocket.*import io.ktor.websocket.*import kotlinx.coroutines.*

suspend fun main() = coroutineScope { val client = HttpClient { install(WebSockets) }

try { client.webSocket("ws://your-server.com/ws") { // Senden send(Frame.Text("Ping"))

// Empfangen mit Timeout withTimeout(5000) { for (frame in incoming) { if (frame is Frame.Text) { println("Antwort: ${frame.readText()}") } } } } } catch (e: Exception) { println("WebSocket-Fehler: ${e.message}") } finally { cli

Empfehlungen