Skip to content

Commit 633481b

Browse files
committed
chore(rivetkit): add support for conn params on onRequest and onWebSocket
1 parent 7a874a5 commit 633481b

File tree

4 files changed

+14
-3
lines changed

4 files changed

+14
-3
lines changed

rivetkit-typescript/packages/rivetkit/src/actor/router-endpoints.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,19 +335,21 @@ export async function handleAction(
335335
}
336336

337337
export async function handleRawRequest(
338+
c: HonoContext,
338339
req: Request,
339340
actorDriver: ActorDriver,
340341
actorId: string,
341342
): Promise<Response> {
342343
const actor = await actorDriver.loadActor(actorId);
344+
const parameters = getRequestConnParams(c.req);
343345

344346
// Track connection outside of scope for cleanup
345347
let createdConn: AnyConn | undefined;
346348

347349
try {
348350
const conn = await actor.connectionManager.prepareAndConnectConn(
349351
createRawRequestSocket(),
350-
{},
352+
parameters,
351353
req,
352354
);
353355

@@ -368,6 +370,7 @@ export async function handleRawWebSocket(
368370
actorDriver: ActorDriver,
369371
actorId: string,
370372
requestIdBuf: ArrayBuffer | undefined,
373+
connParams: unknown | undefined,
371374
): Promise<UpgradeWebSocketArgs> {
372375
const exposeInternalError = req
373376
? getRequestExposeInternalError(req)
@@ -414,7 +417,7 @@ export async function handleRawWebSocket(
414417
);
415418
const conn = await actor.connectionManager.prepareAndConnectConn(
416419
driver,
417-
{},
420+
connParams ?? {},
418421
newRequest,
419422
);
420423
createdConn = conn;

rivetkit-typescript/packages/rivetkit/src/actor/router.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@ export function createActorRouter(
110110
const upgradeWebSocket = runConfig.getUpgradeWebSocket?.();
111111
if (upgradeWebSocket) {
112112
return upgradeWebSocket(async (c) => {
113-
// Parse configuration from Sec-WebSocket-Protocol header
114113
const protocols = c.req.header("sec-websocket-protocol");
115114
const { encoding, connParams } =
116115
parseWebSocketProtocols(protocols);
@@ -165,6 +164,7 @@ export function createActorRouter(
165164
});
166165

167166
return await handleRawRequest(
167+
c,
168168
correctedRequest,
169169
actorDriver,
170170
c.env.actorId,
@@ -178,12 +178,16 @@ export function createActorRouter(
178178
const url = new URL(c.req.url);
179179
const pathWithQuery = c.req.path + url.search;
180180

181+
const protocols = c.req.header("sec-websocket-protocol");
182+
const { connParams } = parseWebSocketProtocols(protocols);
183+
181184
loggerWithoutContext().debug({
182185
msg: "actor router raw websocket",
183186
path: c.req.path,
184187
url: c.req.url,
185188
search: url.search,
186189
pathWithQuery,
190+
connParams,
187191
});
188192

189193
return await handleRawWebSocket(
@@ -192,6 +196,7 @@ export function createActorRouter(
192196
actorDriver,
193197
c.env.actorId,
194198
undefined,
199+
connParams,
195200
);
196201
})(c, noopNext());
197202
} else {

rivetkit-typescript/packages/rivetkit/src/drivers/engine/actor-driver.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,7 @@ export class EngineActorDriver implements ActorDriver {
562562
this,
563563
actorId,
564564
requestIdBuf,
565+
connParams,
565566
);
566567
} else {
567568
throw new Error(`Unreachable path: ${url.pathname}`);

rivetkit-typescript/packages/rivetkit/src/drivers/file-system/manager.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ export class FileSystemManagerDriver implements ManagerDriver {
189189
this.#actorDriver,
190190
actorId,
191191
undefined,
192+
params,
192193
);
193194
return new InlineWebSocketAdapter2(wsHandler);
194195
} else {
@@ -246,6 +247,7 @@ export class FileSystemManagerDriver implements ManagerDriver {
246247
this.#actorDriver,
247248
actorId,
248249
undefined,
250+
connParams,
249251
);
250252
return upgradeWebSocket(() => wsHandler)(c, noopNext());
251253
} else {

0 commit comments

Comments
 (0)