multi-lane-manager
Version:
Nacos 泳道管理与请求路由组件
1 lines • 2.49 kB
Source Map (JSON)
{"version":3,"sources":["../../src/runtime/server-middleware.ts"],"sourcesContent":["import { createServerMiddleware } from './server-utils';\nimport type { H3Event } from 'h3';\n\n/**\n * 泳道管理服务器中间件\n *\n * 这个中间件负责处理跨泳道请求的路由和转发。\n * 当请求包含目标泳道头信息且目标泳道与当前泳道不同时,\n * 中间件会查询 Nacos 获取目标泳道的健康实例,并将请求转发到目标实例。\n *\n * 中间件通过 createServerMiddleware 函数创建,该函数定义在 server-utils.ts 中。\n */\n\n// 创建中间件处理函数\nconst middleware = createServerMiddleware();\n\n// 导出中间件处理函数\nexport default async (event: H3Event) => {\n // 检查请求是否已经被处理过,避免重复处理\n if (event.context._laneManagerHandled) {\n return;\n }\n\n // 记录中间件被调用\n console.log(`[multi-lane-manager:server-middleware] 中间件被调用,路径: ${event.path}`);\n\n // 特别记录 API 请求\n if (event.path.startsWith('/api/')) {\n console.log(`[multi-lane-manager:server-middleware] 处理 API 请求: ${event.path}, 方法: ${event.node.req.method}`);\n }\n\n try {\n // 调用实际的中间件处理函数\n return await middleware(event);\n } catch (error) {\n console.error(`[multi-lane-manager:server-middleware] 处理请求时出错: ${error instanceof Error ? error.message : String(error)}`);\n\n // 如果响应头尚未发送,返回错误响应\n if (!event.node.res.headersSent) {\n event.node.res.statusCode = 500;\n event.node.res.setHeader('Content-Type', 'text/plain');\n event.node.res.end(`处理请求时出错: ${error instanceof Error ? error.message : '未知错误'}`);\n }\n\n // 标记请求已处理\n event.context._laneManagerHandled = true;\n }\n};\n"],"mappings":";;;;;;;;;;AAcA,IAAM,aAAa,uBAAuB;AAG1C,IAAO,4BAAQ,OAAO,UAAmB;AAEvC,MAAI,MAAM,QAAQ,qBAAqB;AACrC;AAAA,EACF;AAGA,UAAQ,IAAI,kGAAqD,MAAM,IAAI,EAAE;AAG7E,MAAI,MAAM,KAAK,WAAW,OAAO,GAAG;AAClC,YAAQ,IAAI,yEAAqD,MAAM,IAAI,mBAAS,MAAM,KAAK,IAAI,MAAM,EAAE;AAAA,EAC7G;AAEA,MAAI;AAEF,WAAO,MAAM,WAAW,KAAK;AAAA,EAC/B,SAAS,OAAO;AACd,YAAQ,MAAM,sFAAmD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AAGzH,QAAI,CAAC,MAAM,KAAK,IAAI,aAAa;AAC/B,YAAM,KAAK,IAAI,aAAa;AAC5B,YAAM,KAAK,IAAI,UAAU,gBAAgB,YAAY;AACrD,YAAM,KAAK,IAAI,IAAI,+CAAY,iBAAiB,QAAQ,MAAM,UAAU,0BAAM,EAAE;AAAA,IAClF;AAGA,UAAM,QAAQ,sBAAsB;AAAA,EACtC;AACF;","names":[]}