let connections = [];
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const upgradeHeader = request.headers.get("Upgrade");
if (!upgradeHeader || upgradeHeader !== "websocket") {
return new Response("Expected Upgrade: websocket", { status: 426 });
}
const webSocketPair = new WebSocketPair();
const client = webSocketPair[0],
server = webSocketPair[1];
connections.push(server);
server.addEventListener("message", (message) => {
connections.forEach((connection) => {
connection.send(message.data);
});
});
server.addEventListener("close", () => {
connections = connections.filter((conn) => conn !== server);
});
return new Response(null, {
status: 101,
webSocket: client,
});
}
let connections = [];
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const upgradeHeader = request.headers.get("Upgrade");
if (!upgradeHeader || upgradeHeader !== "websocket") {
return new Response("Expected Upgrade: websocket", { status: 426 });
}
const webSocketPair = new WebSocketPair();
const client = webSocketPair[0],
server = webSocketPair[1];
connections.push(server);
server.addEventListener("message", (message) => {
connections.forEach((connection) => {
connection.send(message.data);
});
});
server.addEventListener("close", () => {
connections = connections.filter((conn) => conn !== server);
});
return new Response(null, {
status: 101,
webSocket: client,
});
}