WebSocket-Bibliotheken in Kotlin für Echtzeitanwendungen in Web-Apps

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-Bibliotheken in Kotlin: Entwicklung von Echtzeitanwendungen



WebSocket ist ein Protokoll, das eine dauerhafte bidirektionale Verbindung zwischen Client und Server ermöglicht. Im Gegensatz zu HTTP, bei dem eine Anfrage vom Client gesendet wird und der Server antwortet, erlaubt WebSocket dem Server, Daten ohne Anfrage zu senden. Dies macht es ideal für Chats, Online-Spiele, Börsenkurse, Benachrichtigungen und andere Systeme, die eine sofortige Datenübertragung erfordern.



Kotlin, als moderne JVM-Sprache, bietet mehrere leistungsstarke Bibliotheken für die Arbeit mit WebSocket. In diesem Artikel betrachten wir die drei beliebtesten Optionen: Ktor, OkHttp und kweb.



1. Ktor – Framework für Server und Clients



Ktor ist ein asynchrones Framework von JetBrains, das vollständig in Kotlin geschrieben ist. Es unterstützt WebSocket sowohl auf Server- als auch auf Client-Seite. Ktor verwendet Kotlin-Koroutinen, was den Code prägnant und effizient macht.



Installation (Gradle)

dependencies {    implementation("io.ktor:ktor-server-core:2.3.0")    implementation("io.ktor:ktor-server-netty:2.3.0")    implementation("io.ktor:ktor-server-websockets:2.3.0")    implementation("io.ktor:ktor-client-core:2.3.0")    implementation("io.ktor:ktor-client-cio:2.3.0")    implementation("io.ktor:ktor-client-websockets:2.3.0")}


Beispielserver mit Ktor

import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.server.websocket.*import io.ktor.websocket.*

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


Beispielclient mit Ktor

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

fun main() = runBlocking { val client = HttpClient(CIO) { install(WebSockets) } client.webSocket("ws://localhost:8080/chat") { send(Frame.Text("Hallo, Server!")) for (frame in incoming) { if (frame is Frame.Text) { println("Antwort: ${frame.readText()}") } } } client.close()}


Vorteile von Ktor:

  • Volle Unterstützung für Kotlin-Koroutinen
  • Asynchrone Verarbeitung ohne Blockaden
  • Einheitliche Syntax für Server und Client
  • Integrierte Unterstützung für SSL, Komprimierung und andere Protokolle


2. OkHttp – Zuverlässiger HTTP/WebSocket-Client



OkHttp ist eine beliebte Bibliothek von Square, die ursprünglich auf HTTP ausgerichtet ist, aber eine hervorragende WebSocket-Unterstützung bietet. Sie wird in der Android-Entwicklung und in Serveranwendungen eingesetzt. OkHttp arbeitet synchron und asynchron, unterstützt Wiederverbindungen und Verbindungspools.



Installation (Gradle)

dependencies {    implementation("com.squareup.okhttp3:okhttp:4.12.0")}


Beispielclient mit OkHttp

import okhttp3.*

fun main() { val client = OkHttpClient() val request = Request.Builder().url("ws://echo.websocket.org").build() val ws = client.newWebSocket(request, object : WebSocketListener() { override fun onOpen(webSocket: WebSocket, response: Response) { webSocket.send("Hallo von OkHttp!") } override fun onMessage(webSocket: WebSocket, text: String) {

Empfehlungen