diff --git a/plugins/websocket/guest-js/index.ts b/plugins/websocket/guest-js/index.ts index bd6ca752..0f748092 100644 --- a/plugins/websocket/guest-js/index.ts +++ b/plugins/websocket/guest-js/index.ts @@ -1,14 +1,11 @@ -// Copyright 2019-2023 Tauri Programme within The Commons Conservancy -// SPDX-License-Identifier: Apache-2.0 -// SPDX-License-Identifier: MIT +import { invoke, transformCallback } from "@tauri-apps/api/tauri"; -declare global { - interface Window { - __TAURI_INVOKE__: (cmd: string, args?: unknown) => Promise; - __TAURI__: { - transformCallback: (cb: (payload: T) => void) => number; - }; - } +export interface ConnectionConfig { + writeBufferSize?: number; + maxWriteBufferSize?: number; + maxMessageSize?: number; + maxFrameSize?: number; + acceptUnmaskedFrames?: boolean; } export interface MessageKind { @@ -37,19 +34,20 @@ export default class WebSocket { this.listeners = listeners; } - static async connect(url: string, options?: unknown): Promise { + static async connect( + url: string, + config?: ConnectionConfig, + ): Promise { const listeners: Array<(arg: Message) => void> = []; const handler = (message: Message): void => { listeners.forEach((l) => l(message)); }; - return await window - .__TAURI_INVOKE__("plugin:websocket|connect", { - url, - callbackFunction: window.__TAURI__.transformCallback(handler), - options, - }) - .then((id) => new WebSocket(id, listeners)); + return await invoke("plugin:websocket|connect", { + url, + callbackFunction: transformCallback(handler), + config, + }).then((id) => new WebSocket(id, listeners)); } addListener(cb: (arg: Message) => void): void { @@ -69,7 +67,7 @@ export default class WebSocket { "invalid `message` type, expected a `{ type: string, data: any }` object, a string or a numeric array", ); } - return await window.__TAURI_INVOKE__("plugin:websocket|send", { + return await invoke("plugin:websocket|send", { id: this.id, message: m, }); diff --git a/plugins/websocket/src/lib.rs b/plugins/websocket/src/lib.rs index 31d744c3..629beb26 100644 --- a/plugins/websocket/src/lib.rs +++ b/plugins/websocket/src/lib.rs @@ -55,12 +55,13 @@ impl Serialize for Error { #[derive(Default)] struct ConnectionManager(Mutex>); -#[derive(Default, Deserialize)] +#[derive(Deserialize)] #[serde(rename_all = "camelCase")] pub struct ConnectionConfig { pub max_send_queue: Option, pub max_message_size: Option, pub max_frame_size: Option, + #[serde(default)] pub accept_unmasked_frames: bool, }