WebSocket 链接
非官方测试版翻译
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
wsLink 是一个终止链接,用于 tRPC 的 WebSocket 客户端和订阅功能,更多信息可在此处了解。
用法
使用 wsLink 时,需要向其传递 TRPCWebSocketClient 实例,该实例可通过 createWSClient 创建:
client/index.tstsimport {createTRPCClient ,createWSClient ,wsLink } from '@trpc/client';import type {AppRouter } from './server';constwsClient =createWSClient ({url : 'ws://localhost:3000',});consttrpcClient =createTRPCClient <AppRouter >({links : [wsLink <AppRouter >({client :wsClient })],});
client/index.tstsimport {createTRPCClient ,createWSClient ,wsLink } from '@trpc/client';import type {AppRouter } from './server';constwsClient =createWSClient ({url : 'ws://localhost:3000',});consttrpcClient =createTRPCClient <AppRouter >({links : [wsLink <AppRouter >({client :wsClient })],});
认证 / 连接参数
wsLink / createWSClient 配置项
wsLink 函数需要接收一个 TRPCWebSocketClient 参数,该参数可通过 WebSocketClientOptions 中定义的字段进行配置:
tsexport interfaceWebSocketLinkOptions {client :TRPCWebSocketClient ;/*** Data transformer* @see https://trpc.io/docs/v11/data-transformers**/transformer ?:DataTransformerOptions ;}declare functioncreateWSClient (opts :WebSocketClientOptions ):TRPCWebSocketClient ;export interfaceWebSocketClientOptions {/*** The URL to connect to (can be a function that returns a URL)*/url : string | (() =>MaybePromise <string>);/*** Connection params that are available in `createContext()`* These are sent as the first message*/connectionParams ?:Record <string, string> | null | (() =>MaybePromise <Record <string, string> | null>);/*** Ponyfill which WebSocket implementation to use*/WebSocket ?: typeofWebSocket ;/*** The number of milliseconds before a reconnect is attempted.* @default {@link exponentialBackoff}*/retryDelayMs ?: typeofexponentialBackoff ;/*** Triggered when a WebSocket connection is established*/onOpen ?: () => void;/*** Triggered when a WebSocket connection encounters an error*/onError ?: (evt ?:Event ) => void;/*** Triggered when a WebSocket connection is closed*/onClose ?: (cause ?: {code ?: number }) => void;/*** Lazy mode will close the WebSocket automatically after a period of inactivity (no messages sent or received and no pending requests)*/lazy ?: {/*** Enable lazy mode* @default false*/enabled : boolean;/*** Close the WebSocket after this many milliseconds* @default 0*/closeMs : number;};/*** Send ping messages to the server and kill the connection if no pong message is returned*/keepAlive ?: {/*** @default false*/enabled : boolean;/*** Send a ping message every this many milliseconds* @default 5_000*/intervalMs ?: number;/*** Close the WebSocket after this many milliseconds if the server does not respond* @default 1_000*/pongTimeoutMs ?: number;};/*** Custom encoder for wire encoding (e.g. custom binary formats)* @default jsonEncoder*/experimental_encoder ?:Encoder ;}
tsexport interfaceWebSocketLinkOptions {client :TRPCWebSocketClient ;/*** Data transformer* @see https://trpc.io/docs/v11/data-transformers**/transformer ?:DataTransformerOptions ;}declare functioncreateWSClient (opts :WebSocketClientOptions ):TRPCWebSocketClient ;export interfaceWebSocketClientOptions {/*** The URL to connect to (can be a function that returns a URL)*/url : string | (() =>MaybePromise <string>);/*** Connection params that are available in `createContext()`* These are sent as the first message*/connectionParams ?:Record <string, string> | null | (() =>MaybePromise <Record <string, string> | null>);/*** Ponyfill which WebSocket implementation to use*/WebSocket ?: typeofWebSocket ;/*** The number of milliseconds before a reconnect is attempted.* @default {@link exponentialBackoff}*/retryDelayMs ?: typeofexponentialBackoff ;/*** Triggered when a WebSocket connection is established*/onOpen ?: () => void;/*** Triggered when a WebSocket connection encounters an error*/onError ?: (evt ?:Event ) => void;/*** Triggered when a WebSocket connection is closed*/onClose ?: (cause ?: {code ?: number }) => void;/*** Lazy mode will close the WebSocket automatically after a period of inactivity (no messages sent or received and no pending requests)*/lazy ?: {/*** Enable lazy mode* @default false*/enabled : boolean;/*** Close the WebSocket after this many milliseconds* @default 0*/closeMs : number;};/*** Send ping messages to the server and kill the connection if no pong message is returned*/keepAlive ?: {/*** @default false*/enabled : boolean;/*** Send a ping message every this many milliseconds* @default 5_000*/intervalMs ?: number;/*** Close the WebSocket after this many milliseconds if the server does not respond* @default 1_000*/pongTimeoutMs ?: number;};/*** Custom encoder for wire encoding (e.g. custom binary formats)* @default jsonEncoder*/experimental_encoder ?:Encoder ;}
参考文档
可在 GitHub 查看此链接的源代码