mirror of
https://github.com/lush2020/edgetunnel.git
synced 2026-03-21 17:12:33 +08:00
98 lines
2.8 KiB
JavaScript
98 lines
2.8 KiB
JavaScript
import { createServer } from 'node:http';
|
|
import { connect } from 'node:net';
|
|
import { Readable, Duplex, Writable } from 'node:stream';
|
|
import { ReadableStream, WritableStream } from 'node:stream/web';
|
|
|
|
const httpServer = createServer(async (req, resp) => {
|
|
// const rawHttp = new ReadableStream({
|
|
// start(controller) {
|
|
// controller.enqueue(new TextEncoder().encode('GET / HTTP/1.1\r\n'));
|
|
// controller.enqueue(new TextEncoder().encode('Host: www.baidu.com\r\n'));
|
|
// controller.enqueue(
|
|
// new TextEncoder().encode('User-Agent: curl/7.83.1\r\n')
|
|
// );
|
|
// controller.enqueue(new TextEncoder().encode('Accept: */*\r\n\r\n'));
|
|
// controller.close();
|
|
// },
|
|
// cancel() {},
|
|
// });
|
|
// async function* resposne() {
|
|
// for await (const chunk of [
|
|
// 'GET / HTTP/1.1\r\n',
|
|
// 'Host: www.baidu.com\r\n',
|
|
// 'User-Agent: curl/7.83.1\r\n',
|
|
// 'Accept: */*\r\n\r\n',
|
|
// ]) {
|
|
// yield chunk;
|
|
// }
|
|
// }
|
|
// const buffer = resposne();
|
|
// const rawHttp = new Readable({
|
|
// async read() {
|
|
// console.log('pull----');
|
|
// const { value, done } = await buffer.next();
|
|
// if (!done) {
|
|
// this.push(value);
|
|
// }
|
|
// },
|
|
// });
|
|
const rawHttp = Readable.from([
|
|
'GET / HTTP/1.1\r\n',
|
|
'Host: www.baidu.com\r\n',
|
|
'User-Agent: curl/7.83.1\r\n\r\n',
|
|
]);
|
|
// rawHttp.p;
|
|
// rawHttp.push('Accept: */*\r\n\r\n');
|
|
rawHttp.on('end', () => {
|
|
console.log('rawHttp--end-----');
|
|
});
|
|
const socket = connect(
|
|
{
|
|
port: 80,
|
|
host: 'www.baidu.com',
|
|
},
|
|
() => {
|
|
console.log('connected');
|
|
resp.writeHead(200);
|
|
process.nextTick(() => {
|
|
rawHttp.pipe(socket).pipe(resp);
|
|
});
|
|
}
|
|
);
|
|
|
|
// .pipe(resp)
|
|
// .on('close', () => {
|
|
// console.log('--close-----');
|
|
// });
|
|
});
|
|
|
|
httpServer.listen('8888', () => {
|
|
console.log('Server runnig at http://localhost:8888');
|
|
});
|
|
|
|
// const httpServer = createServer(async (req, resp) => {
|
|
// const rawHttp = new ReadableStream({
|
|
// start(controller) {
|
|
// controller.enqueue(new TextEncoder().encode('GET / HTTP/1.1\r\n'));
|
|
// controller.enqueue(new TextEncoder().encode('Host: www.baidu.com\r\n'));
|
|
// controller.enqueue(
|
|
// new TextEncoder().encode('User-Agent: curl/7.83.1\r\n')
|
|
// );
|
|
// controller.enqueue(new TextEncoder().encode('Accept: */*\r\n\r\n'));
|
|
// controller.close();
|
|
// },
|
|
// cancel() {},
|
|
// });
|
|
// const socket = connect({
|
|
// port: 80,
|
|
// host: 'www.baidu.com',
|
|
// });
|
|
// resp.writeHead(200);
|
|
// const webStreamSocket = rawHttp.pipeThrough(Duplex.toWeb(socket));
|
|
// Readable.fromWeb(webStreamSocket).pipe(resp);
|
|
// });
|
|
|
|
// httpServer.listen('8888', () => {
|
|
// console.log('Server runnig at http://localhost:8888');
|
|
// });
|