| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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);
- });
|