RSocket & AsyncAPI
Đầu tiên, giải thích về cách sử dụng cơ bản của điểm vào /rsocket. Luồng tạo route/request/response type và service function trong AsyncAPI là cách tích hợp dự án tùy chọn tiếp theo.
Cách sử dụng cơ bản của RSocket adapter.
Chỉ cài đặt peer package trong dự án sử dụng RSocket.
Việc sử dụng cơ bản không yêu cầu AsyncAPI generator hay WebFlux. Nhập createRSocketApi từ /rsocket và truyền endpoint WebSocket, chỉ truyền JWT làm tham số thứ hai khi cần xác thực. mono hoặc stream sẽ được trả về dưới dạng RxJS Observable.
Tùy chọn: Tích hợp dự án tự động tạo service AsyncAPI.
Luồng gần giống như REST
REST sử dụng Tuy nhiên, tôi không muốn chỉ sử dụng typed-rx-http cho WebFlux. Ngay cả khi backend không tạo Swagger trực tiếp, nếu có kiểu TypeScript phù hợp với đặc tả OpenAPIvà RSocket sử dụngasyncapi-rsocket.jsonTài liệu đọc route, loại tương tác, schema yêu cầu và phản hồi để tạo kiểu TypeScript và hàm dịch vụ.
1. Đầu tiên: Kiểm tra rsocketCommonService là gì bằng mã nguồn đầy đủ.
rsocketCommonService.ts cũng không phải là file được tự động tạo bởi thư viện. Bọc createRSocketApi trong dự án để kết nối/chính sách tái sử dụng JWT ở một nơi, và làm cho service RSocket được tạo chỉ nhập callRSocketMono/callRSocketStream. Dưới đây là mã nguồn đầy đủ của file đó. Đọc Authorization từ headerStore của service công cộng REST, nếu không có thì gọi token API một lần để chuẩn bị JWT, và nếu JWT thay đổi, đóng kết nối RSocket hiện tại và tạo kết nối mới.
rsocketCommonService.ts
tsSau khi sao chép, sửa đổi đường dẫn import headerStore, vị trí AsyncApiTypes, đường dẫn API token, NEXT_PUBLIC_RSOCKET_URL và endpoint RSocket thực tế cho phù hợp với dự án.
2. Vai trò của mã nguồn rsocketCommonService theo cấu trúc.
getRSocketUrl
Máy chủ sử dụng biến môi trường và trình duyệt tạo URL ws hoặc wss dựa trên protocol và host hiện tại.
fetchAuthorization
Khi headerStore không có JWT, gọi API token bao gồm cookie phiên và đọc giá trị từ các trường token, accessToken hoặc jwt.
getRsoketApi
Chia sẻ Promise truy vấn token ngay cả khi có nhiều yêu cầu đến, tái sử dụng kết nối hiện tại cho cùng một JWT và tạo lại kết nối khi JWT thay đổi.
resetRsoketApi
Khi đăng xuất hoặc xóa thông tin xác thực, đóng kết nối RSocket hiện tại và khởi tạo lại JWT và client đã lưu.
callRSocketMono / callRSocketStream
Kiểm tra request và response với kiểu route đã tạo, kết hợp Promise chuẩn bị kết nối vào luồng Observable RxJS để thực thi mono hoặc stream.
3. Tạo service AsyncAPI.
generateAsyncApiRSocket.cjs
js4. Gọi hàm đã tạo.
Dưới đây là một ví dụ requestStream thông thường nhận tiến trình xử lý của nhiều công việc. Chuỗi route và loại sự kiện nằm trong dịch vụ đã tạo.
BatchJobPage.tsx
tsxNếu tương tác AsyncAPI là
thì hàm tạo là requestResponse.callRSocketStreamNếu không, requestStreamsẽ sử dụng. 3. Gọi hàm đã tạo.Trên màn hình, cả hai đều là Observable nhưng stream có thể được gọi nhiều lần. next.