Home > SYS_WebSocket > register
SYS_WebSocket.register() method
注册 WebSocket 连接
签名
typescript
function register(
id: string,
serviceUri: string,
receiveMessageCallFn?: (event: MessageEvent<any>) => void | Promise<void>,
connectedCallFn?: () => void | Promise<void>,
protocols?: string | Array<string>,
): void;1
2
3
4
5
6
7
2
3
4
5
6
7
参数名
参数 | 类型 | 描述 |
|---|---|---|
id | string | 自定义 WebSocket ID |
serviceUri | string | WebSocket 服务地址 |
receiveMessageCallFn | (event: MessageEvent<any>) => void | Promise<void> | (可选) 接收到消息时的回调函数 |
connectedCallFn | () => void | Promise<void> | (可选) 连接建立时的回调函数 |
protocols | string | Array<string> | (可选) 子协议 |
返回值
void
备注
可以用来执行前检测 WebSocket 连接是否正常,但需要注意 **不要尝试相同 ID 不同参数的连接**,这会造成混乱: 如果存在指定 ID 且处于活跃状态中的 WebSocket 连接,那么其余参数的变更将不会被应用
注意:本接口需要使用者启用扩展的外部交互权限,如若未启用将始终 throw Error
示例
javascript
// 1. 注册连接,挂上「连接成功」与「收到消息」两个回调
eda.sys_WebSocket.register('嘉立创示例_注册', 'ws://127.0.0.1:49620', (event) => {
// 服务器推送的每条消息都会进入这个回调(event.data 是消息内容)
console.log('收到服务器消息:', event.data);
}, () => {
console.log('连接已建立');
});
// 2. register 是同步调用,只登记意图,握手需要一点时间,等待回调触发
await new Promise(r => setTimeout(r, 1500));
// 3. 演示完毕后关闭连接,避免残留
eda.sys_WebSocket.close('嘉立创示例_注册');
console.log('已关闭连接');1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14