coze-studio/frontend/packages/common/websocket-manager-adapter/src/index.tsx

97 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright 2025 coze-dev Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* eslint-disable @typescript-eslint/no-empty-function */
/* eslint-disable @typescript-eslint/no-useless-constructor */
/* eslint-disable @typescript-eslint/no-explicit-any */
export interface ConnectionOptions {
// 调用的业务参数对应消息结构中的headers['X-Coze-Biz']
biz: string;
// 发送给的服务的id
service?: number;
// 是否接受所有消息。默认false, onMessage只会emit biz相关消息
acceptAllBizMessages?: boolean;
// 接受的biz消息, 默认是传入的biz
acceptBiz?: string[];
// fws 初始化参数
fwsOptions?: any;
}
export interface FrontierEventMap {
error: any;
message: any;
open: any;
close: any;
ack: any;
}
export class Connection {
readonly service?: number;
constructor(props: ConnectionOptions, channel: any) {}
/**
* 获取建连参数
*/
getInitConfig() {}
getLaunchConfig() {}
/**
* 监听fws
*/
addEventListener(event: string, listener: (data: any) => void) {}
/**
* 移除fws监听
*/
removeEventListener<T extends keyof Record<string, any>>(
event: T,
listener: (data: Record<string, any>[T]) => void,
) {}
send(data: any, options: any = {}) {}
reconnect() {}
pingOnce() {}
// 关闭connection, 需要通知manager, 由它决定是否真正关闭通道
close() {}
destroy() {}
}
export class WebSocketManager {
deviceId = '';
channel: any = null;
/**
* 创建一个connection实例
*/
createConnection(options: ConnectionOptions): Connection {
return new Connection(options, this.channel);
}
/**
* 创建一个新的ws通道不复用现有通道
*/
createChannel(options: ConnectionOptions) {}
}
export default new WebSocketManager();