From 59c834885369b150ff8356313c521eb0f722ab10 Mon Sep 17 00:00:00 2001 From: Robbert van Ginkel <570934+robbertvanginkel@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:34:01 +0100 Subject: [PATCH] Fix InlineWebSocketAdapter message delivery When attempting to reproduce https://www.rivet.dev/docs/actors/websocket-handler/ with createFileSystemDriver, messages sent from the actor to the client are never delivered. The connection appears to work (open/close events fire), but message routing fails silently. When using handleRawWebSocket with an InlineWebSocketAdapter, messages sent from the actor to the client are never delivered. https://github.com/rivet-dev/rivet/blob/c9cfd90d5fb152fd47fc93acfadb1dec7f18e6bf/rivetkit-typescript/packages/rivetkit/src/actor/router-websocket-endpoints.ts#L319-L325 Looks up an adaptor, but this is never set for InlineWebSocketAdapter. --- .../rivetkit/src/common/inline-websocket-adapter.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/rivetkit-typescript/packages/rivetkit/src/common/inline-websocket-adapter.ts b/rivetkit-typescript/packages/rivetkit/src/common/inline-websocket-adapter.ts index 921eb42041..028cb7e927 100644 --- a/rivetkit-typescript/packages/rivetkit/src/common/inline-websocket-adapter.ts +++ b/rivetkit-typescript/packages/rivetkit/src/common/inline-websocket-adapter.ts @@ -50,6 +50,9 @@ export class InlineWebSocketAdapter implements UniversalWebSocket { readyState: 1, }); + // Set __adapter on WSContext so handleRawWebSocket.onMessage can route messages back + (this.#wsContext as any).__adapter = this; + // Initialize the connection // // Defer initialization to allow event listeners to be attached first @@ -207,6 +210,12 @@ export class InlineWebSocketAdapter implements UniversalWebSocket { this.close(1011, "Internal error during initialization"); } } + /** + * Handle message from actor (called via __adapter from handleRawWebSocket.onMessage) + */ + _handleMessage(event: MessageEvent) { + this.#handleMessage(event.data); + } /** * Handle messages received from the server via the WSContext