عن المشروع

Centrifugo هو خادم مراسلة فوري مفتوح المصدر وقابل للتوسع، مصمم لتوصيل الرسائل إلى المستخدمين المتصلين عبر وسائل نقل متعددة تشمل WebSocket وHTTP-streaming وServer-Sent Events (SSE) وGRPC وWebTransport (تجريبي). يطبق نموذج PUB/SUB موجه للمستخدم حيث يشترك العملاء في القنوات ويتلقون الرسائل المنشورة من الواجهة الخلفية عبر واجهة HTTP أو GRPC بسيطة. هذا يجعله مستقلًا عن اللغة ومناسبًا لبناء تطبيقات الدردشة والتعليقات المباشرة والألعاب متعددة اللاعبين ولوحات المعلومات الفورية والأدوات التعاونية واستجابات الذكاء الاصطناعي المتدفقة. تشمل الميزات الرئيسية: - **وسائل نقل فعالة**: WebSocket وHTTP-streaming وSSE وGRPC وWebTransport. - **قابلية التوسع**: دعم مدمج لـ Redis (بما في ذلك Redis Cluster والمخازن المتوافقة مثل Valkey وKeyDB وDragonflyDB) أو PostgreSQL أو Nats للتوسع الأفقي. - **واجهة خادم بسيطة**: نقاط نهاية HTTP وGRPC للتواصل مع الواجهة الخلفية. - **مستهلكون غير متزامنين**: مستهلكو PostgreSQL وKafka لأنماط transactional outbox وCDC. - **مصادقة مرنة**: مصادقة قائمة على JWT أو شبيهة بالوكيل عبر طلبات الواجهة الخلفية. - **نموذج اشتراك غني**: تدفقات الاشتراك (من جانب العميل/الخادم) والخريطة والاستطلاع المشترك وتدفقات الاشتراك الوكيلة. - **أذونات القنوات**: مفهوم Namespace واستراتيجيات أذونات متنوعة. - **سجل الرسائل والاسترداد**: سجل ساخن مع استرداد تلقائي عند إعادة الاتصال، بالإضافة إلى وضع استرداد ذاكرة التخزين المؤقت. - **ضغط Delta**: بناءً على خوارزمية Fossil لتقليل عرض النطاق الترددي. - **الحضور**: حضور القناة عبر الإنترنت مع إشعارات الانضمام والمغادرة. - **RPC**: إرسال استدعاءات RPC إلى الواجهة الخلفية عبر الاتصال الفوري. - **بروتوكول العميل**: بروتوكول صارم وفعال مع مجموعات SDK رسمية لـ JavaScript وDart/Flutter وSwift وJava وPython وGo و.NET (قيد العمل). - **تنسيقات البيانات**: JSON وProtobuf الثنائي مع تسلسل وتحزيم محسّنين. - **واجهة الإدارة**: واجهة ويب مدمجة للمراقبة والاختبار. - **المراقبة**: مقاييس Prometheus ولوحة معلومات Grafana رسمية. يتموضع Centrifugo كبديل مستضاف ذاتيًا للخدمات التجارية مثل Pubnub وPusher وAbly، وكذلك لأطر العمل مثل socket.io وSignalR. وهو مصمم ليتم إعداده مرة واحدة واستخدامه إلى أجل غير مسمى، مما يفصل النقل الفوري عن منطق الأعمال. بدء سريع باستخدام Docker: ```bash docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure ``` ثم افتح http://localhost:8000 لواجهة الإدارة. أعلام insecure مخصصة للتجارب المحلية فقط. للإنتاج، اتبع أدلة التثبيت والبدء السريع على موقع الوثائق الرسمي (centrifugal.dev). يتم صيانة المشروع بنشاط مع دعم المجتمع عبر Telegram وDiscord.