RSocket API
@byeolnaerim/typed-rx-http/rsocket의 연결과 route 타입 API입니다.
createRSocketApi<Operations>(url, jwt?, options?)
| Name | Type | Default | Description |
|---|---|---|---|
url required | string | - | RSocket WebSocket endpoint. |
jwt | string | - | setup과 요청 composite metadata에 넣는 Bearer token. |
keepAlive | number | 30000 | setup keepAlive milliseconds. |
lifetime | number | 90000 | setup lifetime milliseconds. |
dataMimeType | string | application/json | setup data MIME type. |
maxRetry | number | 8 | 자동 재연결 최대 횟수. |
baseDelay | number | 500 | 재연결 exponential backoff 시작값. |
maxDelay | number | 10000 | backoff 상한. |
jitter | number | 250 | 추가 랜덤 지연 상한. |
codec | RSocketJsonCodec | defaultRSocketJsonCodec | payload encode/decode 구현. |
maxRequest | number | 2147483647 | requestStream subscription.request(n) 값. |
RSocketApi methods
mono(route, data?)
requestResponse를 실행해 decoded response 하나를 emit하고 complete합니다. Operations가 있으면 requestResponse route와 request/response 타입이 제한됩니다.
stream(route, data?)
requestStream을 실행하고 payload마다 decoded response를 emit합니다. unsubscribe 시 remote subscription을 cancel합니다.
close()
현재 socket, 연결 중 Promise와 예약된 재연결 timer를 정리하고 CLOSED 상태로 만듭니다.
저수준 연결 API
connectRSocket(options)
RSocketClient와 WebSocket transport를 만들고 ReactiveSocketLike<Buffer> Promise를 반환합니다.
RSocketReconnect
get(), getStatus(), close()를 제공하고 CLOSED/ERROR에서 exponential backoff 재연결을 관리합니다.
RSocketConnectionStatus
CONNECTED | CONNECTING | CLOSED.
defaultRSocketJsonCodec
nullish 값은 빈 Buffer, string은 UTF-8 bytes, 그 외 값은 JSON.stringify 결과로 encode합니다. decode는 JSON을 우선 시도하고, JSON string 안에 다시 JSON이 들어 있는 double-encoded payload도 한 번 더 parse합니다.
Route type utilities
RSocketRoute<Operations>
Operations key union. key가 없으면 string fallback.
RSocketOperationRequest
route의 request property 타입.
RSocketOperationResponse
route의 response property 타입.
RSocketOperationInteraction
route의 interaction string 타입.
RSocketStreamRoute
interaction이 requestStream인 route만 추출.
RSocketMonoRoute
interaction이 requestResponse인 route만 추출.
RSocketRequestArgs
request가 unknown/void/optional인지에 따라 data tuple 필수 여부를 계산합니다.