Files
edgetunnel/functions/ws.ts
zizifn d291067219 init Cf page project (#85)
init cf page project
2023-01-02 02:18:20 +08:00

25 lines
682 B
TypeScript

interface Env {
KV: KVNamespace;
}
export const onRequest: PagesFunction<Env> = async ({ 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, server] = Object.values(webSocketPair);
server.accept();
server.addEventListener("message", (event) => {
console.log(event.data);
server.send(`server reponse after client sent ${event.data}`);
});
server.send(`client sned`);
return new Response(null, {
status: 101,
webSocket: client,
});
};