init cf worker code

This commit is contained in:
etfans
2023-05-28 00:54:56 +08:00
parent 04e25f5130
commit b7e037de56
20 changed files with 18244 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
export default {
async fetch(request, env, ctx) {
const upgradeHeader = request.headers.get('Upgrade');
if (!upgradeHeader || upgradeHeader !== 'websocket') {
return new Response('not websocket', { status: 200 });
}
const webSocketPair = new WebSocketPair();
const [client, webSocket] = Object.values(webSocketPair);
webSocket.accept();
let count = 0;
const readableStream = new ReadableStream({
start(controller) {
setInterval(() => {
controller.enqueue(count);
count++;
}, 500)
},
async pull(controller) {
},
cancel() {
console.log('ReadableStream was canceled.');
},
});
const writableStream = new WritableStream({
write(chunk, controller) {
console.log(`Received data: ${chunk}`);
webSocket.send(`Received data: ${chunk}`);
if (chunk === 3) {
controller.error('eroorooororo')
return;
}
},
close() {
console.log('WritableStream was closed');
},
abort() {
console.log('WritableStream was aborted');
}
});
readableStream.pipeTo(writableStream).catch((error) => {
console.log('pipeTo error', error);
webSocket.close();
});
webSocket.addEventListener('close', () => {
console.log('close');
});
return new Response(null, {
status: 101,
webSocket: client,
});
}
};