Bibliothèque WebSocket Kotlin : Ktor WebSocket Client et Server

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 WebSocket



WebSocket est un protocole qui assure une connexion bidirectionnelle permanente entre un client et un serveur. Dans l'écosystème Kotlin, l'une des bibliothèques les plus puissantes et populaires pour travailler avec WebSocket est Ktor — un framework asynchrone créé par la société JetBrains. Ktor offre un support complet de WebSocket côté serveur comme côté client, permettant de créer facilement des applications en temps réel : chats, notifications, jeux en ligne, trackers de données et bien plus encore.



Dans cet article, nous allons détailler comment utiliser WebSocket en Kotlin avec Ktor. Vous apprendrez à configurer les dépendances, créer un serveur et un client WebSocket, envoyer et recevoir des messages, ainsi que gérer les erreurs et la fermeture de connexion.



Installation et configuration



Pour commencer, ajoutez les dépendances nécessaires dans le fichier build.gradle.kts (ou build.gradle). Si vous utilisez Gradle, ajoutez les modules suivants :



// build.gradle.ktsdependencies {    // Partie serveur    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")

// Partie client 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")}


Pour Maven, utilisez des artefacts similaires. Tous les modules Ktor version 2.x.x prennent en charge les coroutines Kotlin et fonctionnent sur JVM, Android, iOS et d'autres plateformes.



Création d'un serveur WebSocket avec Ktor



Écrivons un simple serveur écho qui reçoit les messages du client et les renvoie. Le serveur écoutera sur le port 8080.



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

fun main() { embeddedServer(Netty, port = 8080) { install(WebSockets) routing { webSocket("/chat") { send("Bienvenue dans le chat !") for (frame in incoming) { if (frame is Frame.Text) { val text = frame.readText() println("Reçu : $text") send("Écho : $text") } } } } }.start(wait = true)}


Dans cet exemple :

  • install(WebSockets) — active le plugin WebSocket sur le serveur.
  • webSocket("/chat") — définit le point de terminaison pour la connexion.
  • send() — envoie un message au client.
  • incoming — le canal par lequel les trames arrivent du client.
  • Les trames peuvent être textuelles (Frame.Text), binaires (Frame.Binary) ou de contrôle.


Création d'un client WebSocket avec Ktor



Écrivons maintenant un client qui se connecte à notre serveur, envoie un message de bienvenue et lit les réponses.



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

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

client.webSocket("ws://localhost:8080/chat") { // Lire le message de bienvenue val welcome = incoming.receive() as Frame.Text println("Serveur : ${welcome.readText()}")

// Envoyer un message send(Frame.Text("Bonjour, serveur !"))

// Attendre la réponse écho val response = incoming.receive() as Frame.Text println("Serveur : ${response.readText()}")

// Fermer la connexion close() }

client.close()}


Le client utilise deu

Recommendations