diff --git a/src/index.ts b/src/index.ts index 47ad83e..9a974b4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -314,7 +314,10 @@ function main() { } // Start PointerProviderServer - (getPref(PrefKey.MKB_ENABLED)) && AppInterface && AppInterface.startPointerServer(); + if (getPref(PrefKey.MKB_ENABLED) && AppInterface) { + STATES.pointerServerPort = AppInterface.startPointerServer() || 9269; + BxLogger.info('startPointerServer', 'Port', STATES.pointerServerPort.toString()); + } } main(); diff --git a/src/modules/mkb/mkb-handler.ts b/src/modules/mkb/mkb-handler.ts index dc08754..c755a90 100644 --- a/src/modules/mkb/mkb-handler.ts +++ b/src/modules/mkb/mkb-handler.ts @@ -33,7 +33,7 @@ class WebSocketMouseDataProvider extends MouseDataProvider { this.#pointerClient = PointerClient.getInstance(); this.#connected = false; try { - this.#pointerClient.start(this.mkbHandler); + this.#pointerClient.start(STATES.pointerServerPort, this.mkbHandler); this.#connected = true; } catch (e) { Toast.show('Cannot enable Mouse & Keyboard feature'); diff --git a/src/modules/mkb/native-mkb-handler.ts b/src/modules/mkb/native-mkb-handler.ts index ddb2eec..e7df62b 100644 --- a/src/modules/mkb/native-mkb-handler.ts +++ b/src/modules/mkb/native-mkb-handler.ts @@ -1,6 +1,6 @@ import { Toast } from "@/utils/toast"; import { PointerClient } from "./pointer-client"; -import { AppInterface } from "@/utils/global"; +import { AppInterface, STATES } from "@/utils/global"; import { MkbHandler } from "./base-mkb-handler"; import { t } from "@/utils/translation"; import { BxEvent } from "@/utils/bx-event"; @@ -149,7 +149,7 @@ export class NativeMkbHandler extends MkbHandler { this.#updateInputConfigurationAsync(false); try { - this.#pointerClient.start(this); + this.#pointerClient.start(STATES.pointerServerPort, this); } catch (e) { Toast.show('Cannot enable Mouse & Keyboard feature'); } diff --git a/src/modules/mkb/pointer-client.ts b/src/modules/mkb/pointer-client.ts index 96c3875..0c936b6 100644 --- a/src/modules/mkb/pointer-client.ts +++ b/src/modules/mkb/pointer-client.ts @@ -14,8 +14,6 @@ enum PointerAction { export class PointerClient { - static #PORT = 9269; - private static instance: PointerClient; public static getInstance(): PointerClient { if (!PointerClient.instance) { @@ -28,11 +26,15 @@ export class PointerClient { #socket: WebSocket | undefined | null; #mkbHandler: MkbHandler | undefined; - start(mkbHandler: MkbHandler) { + start(port: number, mkbHandler: MkbHandler) { + if (!port) { + throw new Error('PointerServer port is 0'); + } + this.#mkbHandler = mkbHandler; // Create WebSocket connection. - this.#socket = new WebSocket(`ws://localhost:${PointerClient.#PORT}`); + this.#socket = new WebSocket(`ws://localhost:${port}`); this.#socket.binaryType = 'arraybuffer'; // Connection opened diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 366af6f..700eb74 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -51,6 +51,8 @@ type BxStates = { serverId: string; }; }>; + + pointerServerPort: number; } type DualEnum = {[index: string]: number} & {[index: number]: string}; diff --git a/src/utils/global.ts b/src/utils/global.ts index 82d5cc3..dabd46c 100644 --- a/src/utils/global.ts +++ b/src/utils/global.ts @@ -22,4 +22,6 @@ export const STATES: BxStates = { currentStream: {}, remotePlay: {}, + + pointerServerPort: 9269, };