|
|
|
@ -1,5 +1,13 @@
|
|
|
|
|
import { invoke, transformCallback } from "@tauri-apps/api/tauri";
|
|
|
|
|
|
|
|
|
|
export interface ConnectionConfig {
|
|
|
|
|
writeBufferSize?: number;
|
|
|
|
|
maxWriteBufferSize?: number;
|
|
|
|
|
maxMessageSize?: number;
|
|
|
|
|
maxFrameSize?: number;
|
|
|
|
|
acceptUnmaskedFrames?: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface MessageKind<T, D> {
|
|
|
|
|
type: T;
|
|
|
|
|
data: D;
|
|
|
|
@ -26,7 +34,10 @@ export default class WebSocket {
|
|
|
|
|
this.listeners = listeners;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static async connect(url: string, options?: unknown): Promise<WebSocket> {
|
|
|
|
|
static async connect(
|
|
|
|
|
url: string,
|
|
|
|
|
config?: ConnectionConfig,
|
|
|
|
|
): Promise<WebSocket> {
|
|
|
|
|
const listeners: Array<(arg: Message) => void> = [];
|
|
|
|
|
const handler = (message: Message): void => {
|
|
|
|
|
listeners.forEach((l) => l(message));
|
|
|
|
@ -35,7 +46,7 @@ export default class WebSocket {
|
|
|
|
|
return await invoke<number>("plugin:websocket|connect", {
|
|
|
|
|
url,
|
|
|
|
|
callbackFunction: transformCallback(handler),
|
|
|
|
|
options,
|
|
|
|
|
config,
|
|
|
|
|
}).then((id) => new WebSocket(id, listeners));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|