mirror of
https://github.com/lush2020/edgetunnel.git
synced 2026-03-23 16:38:34 +08:00
init cf worker code
This commit is contained in:
55
test/worker/stream-ws-test.js
Normal file
55
test/worker/stream-ws-test.js
Normal 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,
|
||||
});
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user