diff --git a/images/chromium-headful/Dockerfile b/images/chromium-headful/Dockerfile index 1eae5fdc..4be552d4 100644 --- a/images/chromium-headful/Dockerfile +++ b/images/chromium-headful/Dockerfile @@ -32,7 +32,8 @@ RUN set -eux; \ make -j$(nproc); \ make install; -FROM ghcr.io/onkernel/neko/base:3.0.6-v1.0 AS neko +FROM ghcr.io/onkernel/neko/base:3.0.6-v1.0.1 AS neko +# ^--- now has event.SYSTEM_PONG with legacy support to keepalive FROM docker.io/ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive diff --git a/images/chromium-headful/client/src/neko/events.ts b/images/chromium-headful/client/src/neko/events.ts index fc76e83c..239eefe0 100644 --- a/images/chromium-headful/client/src/neko/events.ts +++ b/images/chromium-headful/client/src/neko/events.ts @@ -13,6 +13,7 @@ export const EVENT = { INIT: 'system/init', DISCONNECT: 'system/disconnect', ERROR: 'system/error', + PONG: 'system/pong', }, CLIENT: { HEARTBEAT: 'client/heartbeat', @@ -90,7 +91,7 @@ export type ControlEvents = | typeof EVENT.CONTROL.CLIPBOARD | typeof EVENT.CONTROL.KEYBOARD -export type SystemEvents = typeof EVENT.SYSTEM.DISCONNECT +export type SystemEvents = typeof EVENT.SYSTEM.DISCONNECT | typeof EVENT.SYSTEM.PONG export type ClientEvents = typeof EVENT.CLIENT.HEARTBEAT export type MemberEvents = typeof EVENT.MEMBER.LIST | typeof EVENT.MEMBER.CONNECTED | typeof EVENT.MEMBER.DISCONNECTED diff --git a/images/chromium-headful/client/src/neko/index.ts b/images/chromium-headful/client/src/neko/index.ts index 593f58f9..b0fb9397 100644 --- a/images/chromium-headful/client/src/neko/index.ts +++ b/images/chromium-headful/client/src/neko/index.ts @@ -152,8 +152,6 @@ export class NekoClient extends BaseClient implements EventEmitter { this._ws_heartbeat = window.setInterval(() => { this.emit('debug', `sending client/heartbeat`) this.sendMessage(EVENT.CLIENT.HEARTBEAT) - this.emit('debug', `sending chat/message`) - this.sendMessage(EVENT.CHAT.MESSAGE, { content: `heartbeat/fake [${Date.now()}]` }) }, heartbeat_interval * 1000) } } @@ -183,6 +181,10 @@ export class NekoClient extends BaseClient implements EventEmitter { }) } + protected [EVENT.SYSTEM.PONG]({ timestamp }: { timestamp: string }) { + // this.emit('debug', `received system/pong with timestamp: ${timestamp}`) + } + ///////////////////////////// // Member Events ///////////////////////////// diff --git a/images/chromium-headful/client/src/neko/messages.ts b/images/chromium-headful/client/src/neko/messages.ts index ac12ef23..0d600da5 100644 --- a/images/chromium-headful/client/src/neko/messages.ts +++ b/images/chromium-headful/client/src/neko/messages.ts @@ -25,6 +25,7 @@ export type WebSocketMessages = | ScreenResolutionMessage | ScreenConfigurationsMessage | ChatMessage + | SystemPongMessage export type WebSocketPayloads = | SignalProvidePayload @@ -45,6 +46,7 @@ export type WebSocketPayloads = | AdminLockPayload | BroadcastStatusPayload | BroadcastCreatePayload + | SystemPongPayload export interface WebSocketMessage { event: WebSocketEvents | string @@ -74,6 +76,14 @@ export interface SystemMessagePayload { message: string } +// system/pong +export interface SystemPongMessage extends WebSocketMessage, SystemPongPayload { + event: typeof EVENT.SYSTEM.PONG +} +export interface SystemPongPayload { + timestamp: string +} + /* SIGNAL MESSAGES/PAYLOADS */ diff --git a/images/chromium-headful/neko.yaml b/images/chromium-headful/neko.yaml index 00850b42..10393d4a 100644 --- a/images/chromium-headful/neko.yaml +++ b/images/chromium-headful/neko.yaml @@ -43,7 +43,7 @@ plugins: enabled: false chat: - enabled: true + enabled: false filetransfer: enabled: false