Check MKB's protocol version

This commit is contained in:
redphx 2024-12-28 16:32:52 +07:00
parent 91b5434952
commit 6a133186b8

View File

@ -8,6 +8,7 @@ enum PointerAction {
BUTTON_RELEASE = 3, BUTTON_RELEASE = 3,
SCROLL = 4, SCROLL = 4,
POINTER_CAPTURE_CHANGED = 5, POINTER_CAPTURE_CHANGED = 5,
PROTOCOL_VERSION = 127,
} }
@ -15,6 +16,7 @@ export class PointerClient {
private static instance: PointerClient; private static instance: PointerClient;
public static getInstance = () => PointerClient.instance ?? (PointerClient.instance = new PointerClient()); public static getInstance = () => PointerClient.instance ?? (PointerClient.instance = new PointerClient());
private readonly LOG_TAG = 'PointerClient'; private readonly LOG_TAG = 'PointerClient';
private readonly REQUIRED_PROTOCOL_VERSION = 2;
private socket: WebSocket | undefined | null; private socket: WebSocket | undefined | null;
private mkbHandler: MkbHandler | undefined; private mkbHandler: MkbHandler | undefined;
@ -56,6 +58,15 @@ export class PointerClient {
let messageType = dataView.getInt8(0); let messageType = dataView.getInt8(0);
let offset = Int8Array.BYTES_PER_ELEMENT; let offset = Int8Array.BYTES_PER_ELEMENT;
switch (messageType) { switch (messageType) {
case PointerAction.PROTOCOL_VERSION:
const protocolVersion = this.onProtocolVersion(dataView, offset);
BxLogger.info(this.LOG_TAG, 'Protocol version', protocolVersion);
if (protocolVersion !== this.REQUIRED_PROTOCOL_VERSION) {
alert('Required MKB protocol: ' + protocolVersion);
this.stop();
}
break;
case PointerAction.MOVE: case PointerAction.MOVE:
this.onMove(dataView, offset); this.onMove(dataView, offset);
break; break;
@ -75,6 +86,10 @@ export class PointerClient {
}); });
} }
private onProtocolVersion(dataView: DataView, offset: number) {
return dataView.getUint16(offset);
}
onMove(dataView: DataView, offset: number) { onMove(dataView: DataView, offset: number) {
// [X, Y] // [X, Y]
const x = dataView.getInt16(offset); const x = dataView.getInt16(offset);