const http = require('http'); const localtunnel = require('localtunnel'); // const debug = require('debug')('localtunnel:client'); const server = http.createServer((req, res) => { console.log(`收到请求: ${req.method} ${req.url}`); // 添加请求日志 res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!'); }); const port = 9000; async function createTunnel() { try { const tunnel = await localtunnel({ port: port, host: 'https://pre.d8d.fun', // subdomain: 'simple-js-line-f9s-gudz' }); console.log(`隧道已创建: ${tunnel.url}`); // 添加更多事件监听 tunnel.on('request', (info) => { console.log('隧道收到请求:', info); }); tunnel.on('error', err => { console.error('隧道错误:', err); // 尝试重新连接 setTimeout(createTunnel, 1000); }); tunnel.on('close', () => { console.log('隧道关闭 - 尝试重新连接'); // 隧道关闭时自动重连 setTimeout(createTunnel, 1000); }); tunnel.on('connect', () => { console.log('隧道已连接'); }); return tunnel; } catch (err) { console.error('创建隧道失败:', err); // 失败后延迟重试 setTimeout(createTunnel, 1000); } } // 启动 HTTP 服务器 server.listen(port, async () => { console.log(`本地服务器运行在 http://localhost:${port}/`); // 创建隧道并保持连接 let tunnel = await createTunnel(); // 优雅退出 process.on('SIGINT', () => { if (tunnel) { tunnel.close(); } server.close(() => { console.log('服务器已关闭'); process.exit(0); }); }); }); // 处理未捕获的异常 process.on('uncaughtException', (err) => { console.error('未捕获的异常:', err); }); process.on('unhandledRejection', (err) => { console.error('未处理的 Promise 拒绝:', err); });