diff --git a/web/src/rpc_server.ts b/web/src/rpc_server.ts index 1fead6531100..c16c01ad5797 100644 --- a/web/src/rpc_server.ts +++ b/web/src/rpc_server.ts @@ -228,6 +228,16 @@ export class RPCServer { // eslint-disable-next-line @typescript-eslint/no-unused-vars const ver = Uint8ArrayToString(reader.readByteArray()); const nargs = reader.readU32(); + + // nargs=0 means no session_constructor_args (LocalSession request). + // WASM RPC requires ["rpc.WasmSession", wasm_binary]. Wait for proper init. + if (nargs === 0) { + this.log("Received LocalSession init (nargs=0), waiting for WasmSession init..."); + this.requestBytes(SizeOf.I64); + this.state = RPCServerState.ReceivePacketHeader; + return; + } + const args = []; for (let i = 0; i < nargs; ++i) { const typeIndex = reader.readU32();