Bibliothèque WebSocket Kotlin : ktor-client-websockets pour le temps réel

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque WebSocket Kotlin : ktor-client-websockets



Dans le développement web moderne, l'échange de données en temps réel est de plus en plus nécessaire : chats en ligne, notifications, cotations boursières, jeux multijoueurs. Pour Kotlin, l'une des bibliothèques les plus puissantes et natives pour travailler avec le protocole WebSocket est ktor-client-websockets — faisant partie de l'écosystème Ktor (client HTTP Kotlin).



Dans cet article, nous allons détailler comment connecter et utiliser WebSocket en Kotlin avec Ktor. Vous apprendrez à installer la bibliothèque, établir une connexion, envoyer et recevoir des messages, ainsi qu'à gérer les erreurs et la fermeture de connexion.



Qu'est-ce que WebSocket et pourquoi en a-t-on besoin ?

WebSocket est un protocole qui assure une connexion bidirectionnelle permanente entre un client (par exemple, une application Android ou un serveur) et un serveur. Contrairement à HTTP, où le client initie chaque requête, WebSocket permet au serveur d'envoyer instantanément des données au client dès qu'elles apparaissent. C'est idéal pour :

  • les chats et messageries ;
  • les notifications et flux d'événements ;
  • les jeux et éditeurs collaboratifs ;
  • les tickers financiers et le trading.


Installation de la bibliothèque ktor-client-websockets

Pour commencer, ajoutez la dépendance dans votre fichier build.gradle.kts (projet Kotlin/JVM ou Kotlin Multiplatform).



// build.gradle.ktsdependencies {    implementation("io.ktor:ktor-client-core:2.3.7")    implementation("io.ktor:ktor-client-cio:2.3.7") // ou un autre moteur    implementation("io.ktor:ktor-client-websockets:2.3.7")}


Si vous utilisez Kotlin Multiplatform, assurez-vous d'ajouter le module pour chaque plateforme (par exemple, ktor-client-okhttp pour Android).



Création d'un client WebSocket

La classe principale pour travailler avec WebSocket est HttpClient avec le plugin WebSockets. Voici un exemple simple de connexion à un serveur WebSocket.



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") { // Envoyer un message send(Frame.Text("Bonjour, WebSocket !"))

// Recevoir la réponse for (frame in incoming) { when (frame) { is Frame.Text -> { println("Reçu : ${frame.readText()}") } else -> println("Autre type de trame : $frame") } } }

client.close()}


Dans ce code, nous :

  1. Créons un client HTTP avec support WebSocket.
  2. Établissons une connexion avec le serveur de test ws://echo.websocket.org.
  3. Envoyons un message texte.
  4. Lisons les trames entrantes et les affichons dans la console.


Gestion des erreurs et fermeture de connexion

Dans les applications réelles, il est important de gérer correctement les exceptions et de fermer la connexion. Utilisez try-catch et 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") { // Envoi send(Frame.Text("Ping"))

// Réception avec timeout withTimeout(5000) { for (frame in incoming) { if (frame is Frame.Text) { println("Réponse : ${frame.readText()}") } } } } } catch (e: Exception) { println("Erreur WebSocket : ${e.message}") } finally { cli

Recommendations