RSocket & AsyncAPI
Zuerst wird die grundlegende Verwendung des /rsocket-Einstiegspunkts erklärt. Der Fluss zur Erstellung von Route-/Request-/Response-Typen und Service-Funktionen in AsyncAPI ist die nächste optionale Projektintegrationsmethode.
Grundlegende Verwendung des RSocket-Adapters.
Installieren Sie das Peer-Paket nur in Projekten, die RSocket verwenden.
Für die grundlegende Verwendung sind AsyncAPI-Generator oder WebFlux nicht erforderlich. Importieren Sie createRSocketApi aus /rsocket und übergeben Sie den WebSocket-Endpunkt, und übergeben Sie nur dann JWT als zweiten Parameter, wenn eine Authentifizierung erforderlich ist. Mono oder Stream werden als RxJS Observable zurückgegeben.
Optional: Automatische Generierung von AsyncAPI-Services für die Projektintegration.
Fast der gleiche Ablauf wie bei REST.
REST ist swagger.jsonverwendet, während RSocketasyncapi-rsocket.jsonverwendet. Lesen Sie im Dokument die Route, den Interaktionstyp, das Request- und Response-Schema, um TypeScript-Typen und Dienstfunktionen zu generieren.
1. Zuerst: Überprüfen Sie den gesamten Code, um herauszufinden, was rsocketCommonService ist.
rsocketCommonService.ts ist auch keine Datei, die von der Bibliothek automatisch generiert wird. Es ist ein projektspezifischer Adapter, der createRSocketApi direkt im Projekt umschließt, um die Verbindung/JWT-Wiederverwendungsrichtlinie an einem Ort zu halten, sodass der generierte RSocket-Service nur callRSocketMono/callRSocketStream importiert. Unten ist der gesamte Code dieser Datei.
rsocketCommonService.ts
tsNach dem Kopieren den Importpfad von headerStore, den Standort von AsyncApiTypes, den Token-API-Pfad, NEXT_PUBLIC_RSOCKET_URL und den tatsächlichen RSocket-Endpunkt an das Projekt anpassen.
2. Rollen der Code-Struktur von rsocketCommonService.
getRSocketUrl
Der Server verwendet Umgebungsvariablen, während der Browser basierend auf dem aktuellen Protokoll und Host eine ws- oder wss-URL erstellt.
fetchAuthorization
Ruft die Token-API auf und schließt das Sitzungscookie ein, wenn im headerStore kein JWT vorhanden ist, und liest die Werte aus den Feldern token, accessToken oder jwt.
getRsoketApi
Teilt das Token-Abfrage-Promise, auch wenn mehrere Anfragen gleichzeitig eingehen, und verwendet bestehende Verbindungen für dasselbe JWT; wenn sich das JWT ändert, wird eine neue Verbindung hergestellt.
resetRsoketApi
Schließt die aktuelle RSocket-Verbindung und initialisiert das gespeicherte JWT und den Client bei Logout oder Entfernen von Authentifizierungsinformationen.
callRSocketMono / callRSocketStream
Überprüft die Anfrage und Antwort mit dem generierten Routentyp und kombiniert das Verbindungsbereit-Promise mit dem RxJS Observable-Flow, um mono oder stream auszuführen.
3. Erstellung des AsyncAPI-Services.
generateAsyncApiRSocket.cjs
js4. Aufruf der generierten Funktionen.
Hier ist ein allgemeines Beispiel für requestStream, das den Fortschritt mehrerer Aufgaben behandelt. Die Routen-Strings und Ereignistypen sind im generierten Service enthalten.
BatchJobPage.tsx
tsxWählen Sie zwischen mono und stream.
Wenn die AsyncAPI-Interaktion requestResponseist, dann ist die generierte FunktioncallRSocketMonoes, requestStreamsonst callRSocketStreamwird verwendet. Auf dem Bildschirm sind beide Observable, aber der Stream kann mehrmals nextaufgerufen werden.