مكتبة WebSocket لجافا: Tyrus — تطبيق JSR 356 للوقت الفعلي

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

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

ابدأ الدورة

مكتبة WebSocket لجافا: Tyrus — التطبيق المرجعي لـ JSR 356



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



في صفحة pythonlib.ru، نستعرض غالبًا أدوات الاتصالات في الوقت الفعلي. اليوم سنشرح بالتفصيل Tyrus — مكتبة قوية ومرنة للعمل مع WebSocket في جافا، والتي تتيح دمج تبادل البيانات ثنائي الاتجاه بسهولة في مشاريعك.



ما هو Tyrus ولماذا هو مطلوب؟



Tyrus هو تطبيق مفتوح المصدر (تطبيق مرجعي) لمواصفة JSR 356، تم تطويره تحت رعاية Eclipse Foundation. يوفر مجموعة كاملة من واجهات برمجة التطبيقات لإنشاء تطبيقات WebSocket من جانب الخادم والعميل بلغة جافا. المزايا الرئيسية لـ Tyrus:



  • التوافق الكامل مع معيار JSR 356 — الكود المكتوب باستخدام Tyrus يمكن نقله بسهولة إلى تطبيقات أخرى (مثل Apache Tomcat، Jetty).
  • دعم التعليقات التوضيحية — نهج بسيط: يكفي إضافة التعليقات التوضيحية @ServerEndpoint أو @ClientEndpoint إلى POJO.
  • المرونة — يعمل في حاويات servlet (Tomcat، GlassFish) وفي الوضع المستقل (خادم Grizzly المدمج).
  • الأمان — دعم WSS (WebSocket الآمن) عبر مآخذ SSL القياسية في جافا.


تثبيت وتوصيل Tyrus



للعمل مع Tyrus، ستحتاج إلى إضافة عدة تبعيات في pom.xml (Maven). يتضمن التكوين الأساسي نواة المكتبة وطبقة النقل (Grizzly للوضع المستقل):



<!-- التبعية الأساسية لـ Tyrus --><dependency>    <groupId>org.glassfish.tyrus</groupId>    <artifactId>tyrus-server</artifactId>    <version>1.19</version></dependency>

<!-- خادم Grizzly المدمج للوضع المستقل --><dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-container-grizzly-server</artifactId> <version>1.19</version></dependency>

<!-- الجزء العميل (إذا كنت بحاجة للاتصال بخوادم أخرى) --><dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-client</artifactId> <version>1.19</version></dependency>


لـ Gradle (build.gradle):



implementation 'org.glassfish.tyrus:tyrus-server:1.19'implementation 'org.glassfish.tyrus:tyrus-container-grizzly-server:1.19'implementation 'org.glassfish.tyrus:tyrus-client:1.19'


إنشاء خادم WebSocket باستخدام Tyrus



الجزء الخادم هو فئة جافا عادية مع التعليق التوضيحي @ServerEndpoint. يدير Tyrus تلقائيًا دورة حياة الاتصال.



import javax.websocket.*;import javax.websocket.server.ServerEndpoint;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;

@ServerEndpoint("/chat")public class ChatEndpoint {

// نخزن جميع الجلسات النشطة private static final Set<Session> sessions = new CopyOnWriteArraySet<>();

@OnOpen public void onOpen(Session session) { sessions.add(session); System.out.println("اتصال جديد: " + session.getId()); broadcast("المستخدم " + session.getId() + " انضم إلى الدردشة."); }

@OnMessage public void

توصيات