WebSocket
- Kotlin kursu
- İleri seviye
- Ders 23/83
- 5 dk
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
// WebSocket
// buraya yaz
import io.ktor.server.application.*
import io.ktor.server.routing.*
import io.ktor.server.websocket.*
fun main() {
}Örnek çözüm
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
routing {
____("/ws") {
}
}
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 |