Skip to main content
Module

x/jok_transport/mod.ts>NatsTransport

🦕🚌 Transport for your messages from Front-end to Back-end to Front-end to Anywhere
Go to Latest
class NatsTransport
implements Transport
import { NatsTransport } from "https://deno.land/x/jok_transport@v1.1.1/mod.ts";

Features:

  • on should be done after starting the transport
  • on can have the route pattern
  • no need to init & destroy, just start and stop
  • support reading raw messages
  • retry on 503 (No Responder) error, after timeout/2

Constructors

new
NatsTransport(options: TransportOptions & { connect: (opts?: nats.ConnectionOptions) => Promise<nats.NatsConnection>; StringCodec: () => nats.Codec<string>; connectionName?: string; natsServerUrls?: string[] | string; maxPingOut?: number; noEcho?: boolean; queueGroup?: string; authentication?: Authenticatior; }, utils?: TransportUtils)

Type Parameters

TApi
optional
TContext = { }

Properties

private
_state: TransportState
private
isConnectedResolver: (_: boolean) => unknown
private
nc: nats.NatsConnection | null
private
routePostfix: string
private
routeSubscriptions: Map<string, nats.Subscription[]>
private
sc: nats.Codec<string>
isConnected: Promise<boolean>
readonly
state: TransportState

Methods

private
mergeMetadata(context: { metadataReducers: MetadataReducer<MessageMetadata>[]; ctx?: TransportContext<MessageMetadata>; route: string; message: TransportMessage; }): MessageMetadata
execute<K extends keyof TApi & string, TResult>(
route: K,
payload: TApi[K],
): Promise<TResult>
init(data?: { userId: string; sessionId: string; }): Promise<void>
off(route: string): void
on(
route: string,
options?: { queueGroup?: string; readRawMessage?: boolean; },
): () => void
publish<K extends keyof TApi & string>(
route: K,
payload: TApi[K],
): Promise<void>
start(props?: { authentication?: Authenticatior; onConnectionStatusChange?: (status: TransportState) => void; metadataReducers?: MetadataReducer<MessageMetadata>[]; natsServerUrls?: string[] | string; })
subscribeEvents<TOverrideApi = TApi>(handlerMap: Map1<TOverrideApi, TContext | TransportContext<MessageMetadata>>, options?: { readRawMessage?: boolean; ctx?: TContext; }): Promise<() => void>

Subscribes multple events and returns back one dispose function for all of them. Internally uses on api to subscribe individual events