RSocket و AsyncAPI
يشرح أولاً الطريقة الأساسية لاستخدام نقطة دخول /rsocket مباشرة. تدفق إنشاء أنواع route/request/response ووظائف الخدمة في AsyncAPI هو بعد ذلك طريقة تكامل مشروع اختيارية.
الطريقة الأساسية لاستخدام موائم RSocket.
تثبيت حزمة peer فقط في المشاريع التي تستخدم RSocket.
لا يتطلب الاستخدام الأساسي مولد AsyncAPI أو WebFlux. استورد createRSocketApi من /rsocket ومرر نقطة نهاية WebSocket، ومرر JWT كمعامل ثانٍ فقط عند الحاجة إلى المصادقة. يتم إرجاع mono أو stream كـ RxJS Observable.
اختياري: تكامل مشروع إنشاء الخدمة تلقائيًا باستخدام AsyncAPI.
تدفق مشابه تقريبًا لـ REST
REST هو swagger.jsonيستخدم ، بينما RSocket يستخدمasyncapi-rsocket.jsonاقرأ route ونوع التفاعل ومخطط الطلب والاستجابة من الوثيقة لإنشاء أنواع TypeScript ووظائف الخدمة.
1. أولاً: تحقق من ما هو rsocketCommonService من خلال الكود الكامل.
rsocketCommonService.ts ليس ملفًا يتم إنشاؤه تلقائيًا بواسطة المكتبة. قم بتغليف createRSocketApi مباشرة في المشروع لربطه/سياسة إعادة استخدام JWT في مكان واحد، واجعل الخدمة التي تم إنشاؤها تستورد فقط callRSocketMono/callRSocketStream. أدناه هو الكود الكامل لذلك الملف. يقرأ headerStore للخدمة العامة REST من Authorization، وإذا لم يكن موجودًا، يستدعي API الرمز مرة واحدة لإعداد JWT، وعندما يتغير JWT، يغلق الاتصال RSocket الحالي وينشئ اتصالًا جديدًا.
rsocketCommonService.ts
tsبعد النسخ، قم بتعديل مسار استيراد headerStore وموقع AsyncApiTypes ومسار API الرمز وNEXT_PUBLIC_RSOCKET_URL ونقطة نهاية RSocket الفعلية لتناسب المشروع.
2. أدوار تكوين كود rsocketCommonService.
getRSocketUrl
يستخدم الخادم المتغيرات البيئية، بينما يقوم المتصفح بإنشاء URL ws أو wss بناءً على البروتوكول والمضيف الحالي.
fetchAuthorization
عند عدم وجود JWT في headerStore، يتم استدعاء API الرمز مع تضمين ملف تعريف الارتباط للجلسة وقراءة القيم من الحقول token وaccessToken أو jwt.
getRsoketApi
حتى مع وجود طلبات متعددة في نفس الوقت، يتم مشاركة Promise استعلام الرمز، ويتم إعادة استخدام الاتصال الحالي لنفس JWT، وعند تغيير JWT، يتم إنشاء اتصال جديد.
resetRsoketApi
عند تسجيل الخروج أو إزالة معلومات المصادقة، يتم إغلاق اتصال RSocket الحالي وإعادة تعيين JWT والعميل المخزنين.
callRSocketMono / callRSocketStream
يتم فحص الطلب والاستجابة باستخدام نوع route المُنشأ، ويتم دمج Promise إعداد الاتصال في تدفق RxJS Observable لتشغيل mono أو stream.
3. إنشاء خدمة AsyncAPI.
generateAsyncApiRSocket.cjs
js4. استدعاء الوظائف التي تم إنشاؤها.
فيما يلي مثال عام على requestStream يستقبل تقدم معالجة عدة مهام. سلسلة route ونوع الحدث موجودان داخل الخدمة التي تم إنشاؤها.
BatchJobPage.tsx
tsxإذا كان تفاعل AsyncAPI هو
فإن وظيفة الإنشاء هي requestResponse،callRSocketStreamإذا كان requestStreamفإنه يستخدم. 3. استدعاء الوظائف التي تم إنشاؤها.على الشاشة، كلاهما Observable ولكن stream يمكن أن يتم استدعاؤه عدة مرات. next.