mirror of
https://github.com/lush2020/edgetunnel.git
synced 2026-03-22 01:22:21 +08:00
78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
import { connect } from 'cloudflare:sockets';
|
|
|
|
export default {
|
|
async fetch(request, env, ctx) {
|
|
console.log('start fetch111');
|
|
const url = new URL(request.url);
|
|
const target = url.searchParams.get('target');
|
|
// if (!target) {
|
|
// return new Response('target is empty', {
|
|
// status: 500,
|
|
// });
|
|
// }
|
|
try {
|
|
|
|
try {
|
|
/** @type {import("@cloudflare/workers-types").Socket}*/
|
|
const socket = connect(
|
|
{
|
|
hostname: target,
|
|
port: 443,
|
|
}
|
|
);
|
|
|
|
// socket.closed.then(() => {
|
|
// console.log('....socket.closed.then............');
|
|
// }).catch((e) => {
|
|
// console.log('.........socket.closed.error.............', e);
|
|
// }).finally(() => {
|
|
// console.log('.........socket.closed.finally.............');
|
|
// })
|
|
// console.log('---------------close-------');
|
|
|
|
// socket.readable.getReader().closed.then(() => {
|
|
// console.log('.........socket.readabl.....closed then.............');
|
|
// }).catch((e) => {
|
|
// console.log('....socket.readabl.....catch closing.............', e);
|
|
// })
|
|
|
|
await socket.writable.getWriter().write(new Uint8Array([1,2,3,4,5,6,7,8,9,10]))
|
|
|
|
// await delay(10)
|
|
|
|
} catch (e) {
|
|
console.log('connect error', e);
|
|
}
|
|
console.log('start conneted', target);
|
|
|
|
|
|
|
|
|
|
// const writer = socket.writable.getWriter();
|
|
// const encoder = new TextEncoder();
|
|
// const encoded = encoder.encode(
|
|
// `GET / HTTP/1.1\r\nHost: ${target}\r\nUser-Agent: curl/8.0.1\r\nAccept: */*\r\n\r\n`
|
|
// );
|
|
// await writer.write(encoded);
|
|
// // await writer.close();
|
|
// console.log('write end');
|
|
|
|
// await delay(1)
|
|
return new Response('yyyyyyyyyyyyyyyyyyyyyyyyyy', {
|
|
headers: { 'Content-Type': 'text/plain' },
|
|
status: 500,
|
|
});
|
|
} catch (error) {
|
|
console.log('Socket connection failed: ' + error);
|
|
return new Response('Socket connection failed: ' + error, {
|
|
status: 500,
|
|
});
|
|
}
|
|
},
|
|
};
|
|
|
|
function delay(timeout) {
|
|
return new Promise((resolve) => {
|
|
setTimeout(resolve, timeout);
|
|
});
|
|
} |