liwi-resources-websocket-client-node
节点websocket客户端实现liwi
关于
节点 TransportClient,用来反对 liwi-resources-websocket-server。它是 liwi-resources-websocket-client 为节点主机连接:
- 连接通过
ws而不是node的全局WebSocket,它不能设置握手头, - 所以 验证标题 可以在升级请求上发送,
- 并且禁用了页面可见性感知,因此重新连接永远不会等待
visibilitychange这不会发生。
安装
npm install --save liwi-resources-websocket-client-node
用法
import { createNodeWebsocketTransportClient } from "liwi-resources-websocket-client-node";
const transportClient = createNodeWebsocketTransportClient({
url: "ws://localhost:4005/ws",
headers: () => ({ authorization: `Bearer ${getToken()}` }),
onConnectionFailure: (failure) => {
if (failure.type === "handshake" && failure.status === 401) promptSignIn();
},
});
transportClient.connect();
const tasksService = createTasksServiceClient(transportClient);
选项
一切 WebsocketTransportClientOptions 接受,除了 thirdWebsocketArgument, getThirdWebsocketArgument 和 visibilitySource,该包自己设置。加:
| 选项 | 默认的 | 描述 |
|---|---|---|
url | (需要) | Websocket端点。没有 location 来推导它 |
headers | - - - - - - | 握手头,或返回它们的函数 |
webSocketOptions | - - - - - - | 额外的 ws 客户的选择 |
webSocketImplementation | ws | WebSocket 要使用的构造函数 |
通过 headers 作为一个 函数 当令牌可以过期时:它在每次连接尝试时进行评估,因此重新连接携带刷新的令牌,而不是在创建时捕获的令牌。
webSocketOptions.headers 在下面合并 headers,所以 headers 在键碰撞中获胜。
过期的令牌
被拒绝的升级将通过 onConnectionFailure 使用HTTP状态,并且4xx停止重新连接循环,而不是永远重试。看到 连接失败。