/** * 客户端检测工具函数 * 用于在服务器端从请求头中获取客户端信息 */ /** * 从请求头中检测客户端ID * @param request - Remix Request对象 * @returns 客户端ID字符串 */ export const detectClientFromRequest = (request: Request): string => { // 从Nginx传递的头部获取客户端ID const clientId = request.headers.get('X-Client-ID'); const originalPort = request.headers.get('X-Original-Port'); if (clientId) { console.log(`🎯 检测到客户端ID: ${clientId} (端口: ${originalPort})`); return clientId; } // 根据端口映射客户端ID(备用方案) const portToClient: Record = { '5174': 'client-a', '5175': 'client-b', '5176': 'client-c', '5177': 'client-d' }; if (originalPort && portToClient[originalPort]) { console.log(`🎯 通过端口映射检测到客户端: ${portToClient[originalPort]} (端口: ${originalPort})`); return portToClient[originalPort]; } console.log('⚠️ 未能检测到客户端ID,使用默认值: main'); return 'main'; }; /** * 获取请求的调试信息 * @param request - Remix Request对象 * @returns 调试信息对象 */ export const getRequestDebugInfo = (request: Request) => { return { url: request.url, method: request.method, clientId: request.headers.get('X-Client-ID'), originalPort: request.headers.get('X-Original-Port'), forwardedPort: request.headers.get('X-Forwarded-Port'), realIp: request.headers.get('X-Real-IP'), forwardedFor: request.headers.get('X-Forwarded-For'), userAgent: request.headers.get('User-Agent') }; };