WebSocket في Java: مكتبة Java-WebSocket للوقت الفعلي

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

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

ابدأ الدورة

WebSocket في Java: مكتبة Java-WebSocket



في تطوير الويب الحديث، تزداد الحاجة إلى الاتصال ثنائي الاتجاه في الوقت الفعلي بشكل متزايد. تطبيقات الدردشة، الألعاب عبر الإنترنت، أسعار الأسهم، الإشعارات — كل هذا يتطلب نقلًا فوريًا للبيانات بين العميل والخادم. بالنسبة لجافا، واحدة من أشهر وأكثر تطبيقات بروتوكول WebSocket موثوقية هي مكتبة Java-WebSocket (المعروفة أيضًا باسم nv-websocket-client).



في هذه المقالة، سنشرح بالتفصيل كيفية استخدام Java-WebSocket لإنشاء تطبيقات الخادم والعميل، وسنقدم أمثلة على الكود، ونستعرض أفضل الممارسات.



ما هي Java-WebSocket؟



Java-WebSocket هي مكتبة خفيفة الوزن وقوية ومفتوحة المصدر، تطبق بروتوكول WebSocket (RFC 6455). تتيح لمطوري جافا إنشاء خوادم وعملاء WebSocket بسهولة دون الحاجة إلى التعمق في التفاصيل منخفضة المستوى للبروتوكول.



الميزات الرئيسية للمكتبة:

  • دعم كامل لجانبي الخادم والعميل في WebSocket.
  • دعم WSS (WebSocket الآمن) عبر SSL/TLS.
  • إعادة الاتصال التلقائي عند انقطاع الاتصال.
  • معالجة الرسائل المجزأة.
  • دعم الإضافات المخصصة.
  • واجهة برمجة تطبيقات بسيطة تعتمد على الأحداث (onOpen، onMessage، onClose، onError).


التثبيت والإعداد



لاستخدام المكتبة، أضف التبعية إلى ملف pom.xml الخاص بك (Maven):



<dependency>    <groupId>org.java-websocket</groupId>    <artifactId>Java-WebSocket</artifactId>    <version>1.5.4</version></dependency>


إذا كنت تستخدم Gradle:



implementation 'org.java-websocket:Java-WebSocket:1.5.4'


إنشاء خادم WebSocket



لننظر إلى مثال بسيط لخادم WebSocket يستقبل الرسائل ويرسلها مرة أخرى إلى جميع العملاء المتصلين (خادم الصدى):



import org.java_websocket.WebSocket;import org.java_websocket.handshake.ClientHandshake;import org.java_websocket.server.WebSocketServer;import java.net.InetSocketAddress;import java.util.Set;

public class EchoServer extends WebSocketServer {

public EchoServer(int port) { super(new InetSocketAddress(port)); }

@Override public void onOpen(WebSocket conn, ClientHandshake handshake) { System.out.println("اتصال جديد: " + conn.getRemoteSocketAddress()); }

@Override public void onClose(WebSocket conn, int code, String reason, boolean remote) { System.out.println("قطع الاتصال: " + conn.getRemoteSocketAddress() + " (" + reason + ")"); }

@Override public void onMessage(WebSocket conn, String message) { System.out.println("تم استلام رسالة: " + message); // إرسال الرسالة مرة أخرى إلى جميع العملاء Set<WebSocket> connections = getConnections(); for (WebSocket client : connections) { client.send("صدى: " + message); } }

@Override public void onError(WebSocket conn, Exception ex) { System.err.println("خطأ: " + ex.getMessage()); if (conn != null) { conn.close(); } }

@Override public void onStart() { System.out.println("تم تشغيل الخادم على المنفذ " + getPort()); }

public static void main(String[] args) { int port = 8887; EchoServer server = new EchoServer(port); server.start(); }}


يتم تشغيل هذا الخادم على المنفذ 8887، وعند استلام أي رسالة، يرسلها مرة أخرى إلى جميع العملاء المتصلين مع البادئة "صدى:".



إنشاء عميل WebSocket



الآن سنكتب عميلًا يتصل بخادمنا

توصيات