CodeBlanks Logo Icon CodeBlanks

WebSocket

Ktor WebSocket ile gerçek zamanlı iletişim öğrenirsin.

WebSocket nedir?

WebSocket, istemci ve sunucu arasında çift yönlü, kalıcı bir bağlantıdır. HTTP'nin aksine bağlantı açık kaldar; her iki taraf da anlık veri gönderir.

Ktor'da routing { webSocket("/ws") { ... } } ile bir WebSocket yolu tanımlanır. İçeride incoming ve outgoing kanalları ile veri alışverişi yapılır. Örnek: sohbet uygulaması, canlı bildirim, oyun verisi akışı. WebSocket, tekrar tekrar HTTP isteği yapmaktan daha verimlidir; gerçek zamanlı uygulamalar için uygundur.

incoming ve outgoing

Bir webSocket bloğu içinde incoming ile istemciden gelen çerçeveleri, outgoing ile istemciye gönderilen çerçeveleri yönetirsin.

Örnek: for (frame in incoming) { outgoing.send(Frame.Text("Echo")) }. Bu döngü istemciden mesaj geldikçe yanıt gönderir. Frame.Text, metin çerçevesidir; Frame.Binary ikili veri içindir. Bağlantı kapanınca incoming akışı biter ve döngüden çıkılır. Bu yapı, eşzamanlı veri akışını Kotlin coroutine'leriyle birleştirir.

Uygulama WebSocket yolu ekle

fun Application.module() tanımla. İçinde routing { webSocket("/ws") { } } aç. main içinde println("WebSocket hazır") yazdır.

Başlangıç kodu

Main.kt
// WebSocket
// buraya yaz
import io.ktor.server.application.*
import io.ktor.server.routing.*
import io.ktor.server.websocket.*

fun main() {
    
}

Örnek çözüm

Main.kt
fun Application.module() {
    routing {
        webSocket("/ws") {
        }
    }
}

fun main() {
    println("WebSocket hazır")
}

Beklenen çıktı

WebSocket hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 webSocket yolunu tamamla

Soru
routing {
    ____("/ws") {
        
    }
}
Cevap
routing {
    webSocket("/ws") {
        
    }
}

Açıklama: webSocket bloğu ile yol açılır.

2 WebSocket hangi senaryo için uygundur?

  • Aylık rapor
  • Tek seferlik dosya indirme
  • Gerçek zamanlı sohbet Doğru cevap
  • Statik sayfa gösterimi

Açıklama: Sohbet gerçek zamanlı veri ister; WebSocket uygundur.

3 WebSocket parçalarını eşle

Kavram Anlamı
webSocket Yol açar
incoming Gelen veri
outgoing Giden veri
Frame.Text Metin çerçevesi

İleri seviye bölümündeki tüm dersler