مكتبات WebSocket في Kotlin لإنشاء تطبيقات الوقت الفعلي في تطبيقات الويب

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبات WebSocket في Kotlin: إنشاء تطبيقات الوقت الفعلي



WebSocket هو بروتوكول يوفر اتصالاً ثنائي الاتجاه دائم بين العميل والخادم. على عكس HTTP، حيث يتم إرسال الطلب من العميل ويستجيب الخادم، يسمح WebSocket للخادم ببدء إرسال البيانات دون طلب. وهذا يجعله مثالياً للدردشات والألعاب عبر الإنترنت وأسعار الأسهم والإشعارات والأنظمة الأخرى التي تتطلب نقل البيانات الفوري.



Kotlin، باعتبارها لغة JVM حديثة، تقدم العديد من المكتبات القوية للعمل مع WebSocket. في هذه المقالة، سنستعرض ثلاثة من الخيارات الأكثر شيوعاً: Ktor وOkHttp وkweb.



1. Ktor – إطار عمل للخوادم والعملاء



Ktor هو إطار عمل غير متزامن من JetBrains، مكتوب بالكامل بلغة Kotlin. وهو يدعم WebSocket على جانبي الخادم والعميل. يستخدم Ktor coroutines، مما يجعل الكود موجزاً وفعالاً.



التثبيت (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")}


مثال على خادم باستخدام 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("مرحباً بك في الدردشة!")) for (frame in incoming) { if (frame is Frame.Text) { val text = frame.readText() send(Frame.Text("لقد كتبت: $text")) } } } } }.start(wait = true)}


مثال على عميل باستخدام 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("مرحباً أيها الخادم!")) for (frame in incoming) { if (frame is Frame.Text) { println("الرد: ${frame.readText()}") } } } client.close()}


مزايا Ktor:

  • دعم كامل لـ coroutines في Kotlin
  • معالجة غير متزامنة بدون حظر
  • صيغة موحدة للخادم والعميل
  • دعم مدمج لـ SSL والضغط والبروتوكولات الأخرى


2. OkHttp – عميل HTTP/WebSocket موثوق



OkHttp هي مكتبة شائعة من Square، موجهة في الأصل لـ HTTP ولكن مع دعم ممتاز لـ WebSocket. تُستخدم في تطوير Android وتطبيقات الخادم. يعمل OkHttp بشكل متزامن وغير متزامن، ويدعم إعادة الاتصال وتجميع الاتصالات.



التثبيت (Gradle)

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


مثال على عميل باستخدام 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("مرحباً من OkHttp!") } override fun onMessage(webSocket: WebSocket, text: String) {

توصيات