From 89f1f51a07baa97608752098ac9d771cc4406a45 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Fri, 3 Oct 2025 12:03:44 -0700 Subject: [PATCH] fix(core): fix sec-websocket-protocol in deno --- packages/rivetkit/src/manager/router.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/rivetkit/src/manager/router.ts b/packages/rivetkit/src/manager/router.ts index a1a81a153..487a1d41e 100644 --- a/packages/rivetkit/src/manager/router.ts +++ b/packages/rivetkit/src/manager/router.ts @@ -87,6 +87,25 @@ export function createManagerRouter( router.use("*", loggerMiddleware(logger())); + // HACK: Add Sec-WebSocket-Protocol header to fix KIT-339 + // + // Some Deno WebSocket providers do not auto-set the protocol, which + // will cause some WebSocket clients to fail + router.use( + "*", + createMiddleware(async (c, next) => { + const upgrade = c.req.header("upgrade"); + const isWebSocket = upgrade?.toLowerCase() === "websocket"; + const isGet = c.req.method === "GET"; + + if (isGet && isWebSocket) { + c.header("Sec-WebSocket-Protocol", "rivet"); + } + + await next(); + }), + ); + if (serverlessActorDriverBuilder) { addServerlessRoutes(runConfig, serverlessActorDriverBuilder, router); } else {