@rivetkit/cloudflare-workers 2.2.1 → 2.3.0-rc.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/websocket.ts DELETED
@@ -1,81 +0,0 @@
1
- // Modified from https://github.com/honojs/hono/blob/40ea0eee58e39b31053a0246c595434f1094ad31/src/adapter/cloudflare-workers/websocket.ts#L17
2
- //
3
- // This version calls the open event by default
4
-
5
- import type { UpgradeWebSocket, WSEvents, WSReadyState } from "hono/ws";
6
- import { defineWebSocketHelper, WSContext } from "hono/ws";
7
- import { WS_PROTOCOL_STANDARD } from "rivetkit/driver-helpers";
8
-
9
- // Based on https://github.com/honojs/hono/issues/1153#issuecomment-1767321332
10
- export const upgradeWebSocket: UpgradeWebSocket<
11
- WebSocket,
12
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
- any,
14
- WSEvents<WebSocket>
15
- > = defineWebSocketHelper(async (c, events) => {
16
- const upgradeHeader = c.req.header("Upgrade");
17
- if (upgradeHeader !== "websocket") {
18
- return;
19
- }
20
-
21
- const webSocketPair = new WebSocketPair();
22
- const client: WebSocket = webSocketPair[0];
23
- const server: WebSocket = webSocketPair[1];
24
-
25
- const wsContext = new WSContext<WebSocket>({
26
- close: (code, reason) => server.close(code, reason),
27
- get protocol() {
28
- return server.protocol;
29
- },
30
- raw: server,
31
- get readyState() {
32
- return server.readyState as WSReadyState;
33
- },
34
- url: server.url ? new URL(server.url) : null,
35
- send: (source) => server.send(source),
36
- });
37
-
38
- if (events.onClose) {
39
- server.addEventListener("close", (evt: CloseEvent) =>
40
- events.onClose?.(evt, wsContext),
41
- );
42
- }
43
- if (events.onMessage) {
44
- server.addEventListener("message", (evt: MessageEvent) =>
45
- events.onMessage?.(evt, wsContext),
46
- );
47
- }
48
- if (events.onError) {
49
- server.addEventListener("error", (evt: Event) =>
50
- events.onError?.(evt, wsContext),
51
- );
52
- }
53
-
54
- server.accept?.();
55
-
56
- // note: cloudflare actors doesn't support 'open' event, so we call it immediately with a fake event
57
- //
58
- // we have to do this after `server.accept() is called`
59
- events.onOpen?.(new Event("open"), wsContext);
60
-
61
- // Build response headers
62
- const headers: Record<string, string> = {};
63
-
64
- // Set Sec-WebSocket-Protocol if does not exist
65
- const protocols = c.req.header("Sec-WebSocket-Protocol");
66
- if (
67
- typeof protocols === "string" &&
68
- protocols
69
- .split(",")
70
- .map((x) => x.trim())
71
- .includes(WS_PROTOCOL_STANDARD)
72
- ) {
73
- headers["Sec-WebSocket-Protocol"] = WS_PROTOCOL_STANDARD;
74
- }
75
-
76
- return new Response(null, {
77
- status: 101,
78
- headers,
79
- webSocket: client,
80
- });
81
- });