Errors in websocket worker tail

I just made my very first websocket worker and deployed it. It works just fine, however when I tried to see the logs with tail I encountered some strange behavior: no logs show while the connection is active and when i disconnect all log entries show up with two identical errors stating: Error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response. Refer to: https://developers.cloudflare.com/workers/observability/errors/ the linked page stated that I need the following block to prevent this:
server.addEventListener("close", () => {
server.close();
});
server.addEventListener("close", () => {
server.close();
});
however after adding it the same issue remains. Output:
GET https://api-dev.example.com/charger/ocpp?chargerId=1 - Exception Thrown @ 2025. 10. 15. 10:46:16
(log) OCPP-[C(1)]: Connection attempt.
(log) OCPP-[C(1)->S]: [2, "36799101", "BootNotification", {...}]
(log) OCPP-[S->C(1)]: [3,"36799101",{"currentTime":"2025-10-15T08:46:22.779Z","interval":0,"status":"Accepted"}]
✘ [ERROR] Error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response. Refer to: https://developers.cloudflare.com/workers/observability/errors/


✘ [ERROR] Error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response. Refer to: https://developers.cloudflare.com/workers/observability/errors/
GET https://api-dev.example.com/charger/ocpp?chargerId=1 - Exception Thrown @ 2025. 10. 15. 10:46:16
(log) OCPP-[C(1)]: Connection attempt.
(log) OCPP-[C(1)->S]: [2, "36799101", "BootNotification", {...}]
(log) OCPP-[S->C(1)]: [3,"36799101",{"currentTime":"2025-10-15T08:46:22.779Z","interval":0,"status":"Accepted"}]
✘ [ERROR] Error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response. Refer to: https://developers.cloudflare.com/workers/observability/errors/


✘ [ERROR] Error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response. Refer to: https://developers.cloudflare.com/workers/observability/errors/
1 Reply
Noel
NoelOP2mo ago
Code with some checks removed to fit in message:
export default {
fetch(request, env, ctx) {
const [client, server] = new WebSocketPair();
const chargerId = new URL(request.url).searchParams.get('chargerId');

console.log("OCPP-[C(" + chargerId + ")]: Connection attempt.");

server.accept();
server.addEventListener('message', async event => {
console.log("OCPP-[C(" + chargerId + ")->S]: " + event.data);
try {
let res = await process(event.data, chargerId, env);
console.log("OCPP-[S->C(" + chargerId + ")]: " + res);
event.target.send(res)
} catch (e) {
console.error("OCPP-[S->C(" + chargerId + ")]: ", e)
}
});

server.addEventListener("close", () => {
server.close();
});

return new Response(null, {status: 101,webSocket: client});
}
}
export default {
fetch(request, env, ctx) {
const [client, server] = new WebSocketPair();
const chargerId = new URL(request.url).searchParams.get('chargerId');

console.log("OCPP-[C(" + chargerId + ")]: Connection attempt.");

server.accept();
server.addEventListener('message', async event => {
console.log("OCPP-[C(" + chargerId + ")->S]: " + event.data);
try {
let res = await process(event.data, chargerId, env);
console.log("OCPP-[S->C(" + chargerId + ")]: " + res);
event.target.send(res)
} catch (e) {
console.error("OCPP-[S->C(" + chargerId + ")]: ", e)
}
});

server.addEventListener("close", () => {
server.close();
});

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

Did you find this page helpful?