Skip to content

Cloudflare Websocket with Durable Objects not working #15975

@LawrenceGB

Description

@LawrenceGB

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/cloudflare

SDK Version

9.11.0

Framework Version

No response

Link to Sentry event

No response

Reproduction Example/SDK Setup

import { DurableObject } from "cloudflare:workers";
import * as Sentry from '@sentry/cloudflare';

// Worker with Sentry wrapper
export default Sentry.withSentry(
	env => ({
		dsn: env.SENTRY_DSN,

	}),
	{
		async fetch(request, env, ctx) {
			// Handle WebSocket requests
			if (request.url.includes("/websocket")) {
				// Get DO stub
				const id = env.WEBSOCKET_SERVER.idFromName("user-id");
				const stub = env.WEBSOCKET_SERVER.get(id);

				// Forward to DO
				return await stub.fetch(request);
			}

			return new Response("Not a WebSocket request");
		},
	}
);

// Durable Object for WebSocket
export class WebSocketServer extends DurableObject {
	constructor(ctx, env) {
		super(ctx, env);
	}

	async fetch(request) {
		// Verify WebSocket upgrade
		const upgradeHeader = request.headers.get("Upgrade");
		if (!upgradeHeader || upgradeHeader.toLowerCase() !== "websocket") {
			return new Response("Expected WebSocket", { status: 426 });
		}

		// Create WebSocket pair
		const webSocketPair = new WebSocketPair();
		const [client, server] = Object.values(webSocketPair);

		// Accept the server side
		server.accept();

		// Basic message handler
		server.addEventListener("message", (event) => {
			server.send("Echo: " + event.data);
		});

		Sentry.captureException(new Error('Testing sentry'));


		// Return client WebSocket
		return new Response(null, {
			status: 101,
			webSocket: client
		});
	}
}

Steps to Reproduce

Just added a test exception, did not show up.

Expected Result

Should have received the error in dashboard.

Actual Result

Did not show.
However, it does work when running the worker locally.

Metadata

Metadata

Assignees

Projects

Status

Waiting for: Community

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions