C:\Disk\Gateway>gateway.exe 🚀 网关服务启动中... 📍 绑定地址: 127.0.0.1:8000 (通过nginx代理) 📝 日志级别: info 🔧 版本: 0.1.0 🎯 环境: development 🌐 外部访问: https://pactgo.cn (nginx代理) [03-23 13:08:18.414] 🚀 创建WebSocket连接池 [03-23 13:08:18.415] ⚙️ 创建默认通信配置 [03-23 13:08:18.415] 🚀 初始化任务处理服务 [03-23 13:08:18.415] 📋 WebSocket连接池已创建 [03-23 13:08:18.415] ⚙️ 通信配置已加载: "ws://localhost:8000/api/v1/ws/control" [03-23 13:08:18.415] 🏭 创建生产环境通信配置 (心跳: 30s, 超时: 60s) [03-23 13:08:18.415] 🚀 创建WebSocket客户端,配置URL: ws://pactgo.cn/api/v1/ws/control [2026-03-23T05:08:18Z INFO actix_server::builder] starting 2 workers ✅ 网关服务已启动在 127.0.0.1:8000 (通过nginx代理) 🔍 可用接口: 🎯 企业微信回调 - 直接匹配企业微信配置 POST /wecom - 企业微信回调(必须直接匹配企业微信配置) 📋 API接口(通过 /api/v1 前缀): GET /api/v1/health - 健康检查 GET /api/v1/system - 系统信息 POST /api/v1/task - 处理任务 GET /api/v1/task/ - 查询任务状态 GET /api/v1/tasks - 查询任务列表 POST /api/v1/wechat/miniprogram/callback - 微信小程序回调 GET /api/v1/ws/control - WebSocket控制通道 GET /api/v1/ws/task - WebSocket任务通道 POST /api/v1/test/websocket/send - WebSocket发送测试 POST /api/v1/test/websocket/send_and_wait - WebSocket发送并等待测试 GET /api/v1/test/websocket/get_manager - WebSocket管理器测试 GET /api/v1/test/websocket/connection_send - WebSocket连接发送测试 POST /api/v1/test/websocket/direct_send - WebSocket直接发送测试 POST /api/v1/test/websocket/direct_send_and_wait - WebSocket直接发送并等待测试 🌐 外部访问: https://pactgo.cn (nginx代理) 🔗 WebSocket连接: wss://pactgo.cn/api/v1/ws/control [2026-03-23T05:08:18Z INFO actix_server::server] Actix runtime found; starting in Actix runtime [2026-03-23T05:08:18Z INFO actix_server::server] starting service: "actix-web-service-127.0.0.1:8000", workers: 2, listening on: 127.0.0.1:8000 🔄 启动WebSocket客户端连接测试... [03-23 13:08:18.425] 🔗 正在连接到网关WebSocket: ws://pactgo.cn/api/v1/ws/control [03-23 13:08:18.425] 🔍 验证通信配置... [03-23 13:08:18.425] ✅ 通信配置验证通过 (URL: ws://pactgo.cn/api/v1/ws/control, 最大连接数: 100) [03-23 13:08:18.425] ✅ WebSocket连接成功 (模拟) ✅ WebSocket客户端连接成功 [03-23 13:08:18.426] 🔗 WebSocket客户端连接状态: 已连接 🔗 WebSocket客户端已连接 [03-23 13:08:18.426] 📤 WebSocket客户端发送任务: TextProcessing (心跳: 30s, 超时: 60s) ✅ 测试任务发送成功: "任务处理成功(WebSocket模拟)" [03-23 13:08:18.428] 📋 获取所有连接信息: 0个连接 [03-23 13:08:18.556] 🔗 收到WebSocket连接请求: [03-23 13:08:18.556] HttpRequest GET HTTP/1.1:/api/v1/ws/control [03-23 13:08:18.557] headers: [03-23 13:08:18.557] "upgrade": "websocket" [03-23 13:08:18.557] "x-api-key": "claw_secret_key" [03-23 13:08:18.557] "sec-websocket-version": "13" [03-23 13:08:18.558] "x-real-ip": "222.211.215.207" [03-23 13:08:18.558] "connection": "upgrade" [03-23 13:08:18.559] "host": "pactgo.cn" [03-23 13:08:18.560] "x-forwarded-for": "222.211.215.207" [03-23 13:08:18.560] "x-forwarded-proto": "https" [03-23 13:08:18.560] "sec-websocket-key": "xV8B16meVWRnAZI8FHb1ig==" [03-23 13:08:18.560] ✅ WebSocket连接认证通过 [03-23 13:08:18.560] 🎯 检测到SmartClaw服务连接 (控制通道) [03-23 13:08:18.560] 🔗 开始WebSocket握手... [03-23 13:08:18.560] ✅ WebSocket握手成功 [03-23 13:08:18.561] 🔌 添加新连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 [03-23 13:08:18.561] 🔌 添加WebSocket会话: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 [03-23 13:08:18.561] 🔌 创建新的WebSocket连接: id=26dd6cb5-c305-421d-a8a3-753d0455b1c6, type=SmartClaw [03-23 13:08:18.561] 🔄 启动WebSocket消息处理循环... [03-23 13:08:18.561] ✅ WebSocket连接已建立 [03-23 13:08:18.561] ✅ WebSocket消息处理循环已启动 [03-23 13:08:18.570] 📨 收到消息: {"service":"smartclaw","timestamp":1774242498,"type":"connect","version":"0.1.0"} [03-23 13:08:18.570] 🔗 收到连接消息 [03-23 13:08:18.594] 📨 收到消息: {"service":"smartclaw","timestamp":1774242498,"type":"heartbeat"} [03-23 13:08:18.594] 💓 收到心跳消息 [03-23 13:08:22.292] 📨 收到消息: {"service":"smartclaw","timestamp":1774242502,"type":"heartbeat"} [03-23 13:08:22.293] 💓 收到心跳消息 [03-23 13:08:23.435] 🔌 断开WebSocket连接: ws://pactgo.cn/api/v1/ws/control 🔌 WebSocket客户端已断开 [03-23 13:08:37.412] 📱 收到企业微信回调 [03-23 13:08:37.412] 请求方法: POST [03-23 13:08:37.414] 查询参数: msg_signature=d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a×tamp=1774242517&nonce=1774420742 [03-23 13:08:37.414] 📥 开始消息推送处理流程 [03-23 13:08:37.415] 消息内容: [03-23 13:08:37.415] 🔐 开始验证企业微信签名 [03-23 13:08:37.415] 🔐 验证企业微信签名: [03-23 13:08:37.415] msg_signature: d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a [03-23 13:08:37.415] timestamp: 1774242517 [03-23 13:08:37.415] nonce: 1774420742 [03-23 13:08:37.415] data: sTK12sXLTGbDIHop8a/0+8lehw6CBjCdfXBdR1DwpyFWmt8fttKjChwIzocwgWXaPDPaB68Cs7+MHVg6VINthu4bLHS/lNgKGjYYsQHe5vrdEQ2OGUBOWIQqNNX3bb0e7Ls/zBecAw7blSQNKi4akxGF1anvMVuVfv8ZspdkkongM3jXFiQ0HJJJDv68ejWRpW9iY3XR5F3FsQgYB0UbJguKtO+JuBdxlLQ30PdI0VrNtWL6XbMZN1xwXWTqxwy/A7aXFv/7nc2w/HnPJZW21/2AX0K/1MIdQpOamtZ3LaV5/tu/bSqUaSEF8n2PHN3tpmynYQKtcq0+KZWEnUXmxqvTWotLkV8f6MPlkPrQ5cEmXZ+EcV8jS4v2y9gZvhQ7IUYJ3H78eoqKm0uGlKCnRM9Ac22F961lRKuT9Y+ggsCtlKwU3eDuKLNJ2rdAQ0oO4OxcvPVguuy9c5m6CepL2g== [03-23 13:08:37.416] token: mytoken123456 [03-23 13:08:37.416] 排序后拼接字符串: 17742425171774420742mytoken123456sTK12sXLTGbDIHop8a/0+8lehw6CBjCdfXBdR1DwpyFWmt8fttKjChwIzocwgWXaPDPaB68Cs7+MHVg6VINthu4bLHS/lNgKGjYYsQHe5vrdEQ2OGUBOWIQqNNX3bb0e7Ls/zBecAw7blSQNKi4akxGF1anvMVuVfv8ZspdkkongM3jXFiQ0HJJJDv68ejWRpW9iY3XR5F3FsQgYB0UbJguKtO+JuBdxlLQ30PdI0VrNtWL6XbMZN1xwXWTqxwy/A7aXFv/7nc2w/HnPJZW21/2AX0K/1MIdQpOamtZ3LaV5/tu/bSqUaSEF8n2PHN3tpmynYQKtcq0+KZWEnUXmxqvTWotLkV8f6MPlkPrQ5cEmXZ+EcV8jS4v2y9gZvhQ7IUYJ3H78eoqKm0uGlKCnRM9Ac22F961lRKuT9Y+ggsCtlKwU3eDuKLNJ2rdAQ0oO4OxcvPVguuy9c5m6CepL2g== [03-23 13:08:37.416] 计算签名: d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a [03-23 13:08:37.416] 验证结果: ✅ 通过 [03-23 13:08:37.416] ✅ 签名验证通过,开始处理消息 [03-23 13:08:37.416] 📄 开始解析企业微信XML消息 [03-23 13:08:37.417] 🔒 发现加密消息,开始解密 [03-23 13:08:37.417] 提取到加密内容 [03-23 13:08:37.417] ✅ 消息解密成功 [03-23 13:08:37.417] 解密后内容: 177424251776203135864602051401000002 [03-23 13:08:37.417] 发送者: ZengQingMing [03-23 13:08:37.417] 消息内容: 好像通了 [03-23 13:08:37.417] 消息类型: text [03-23 13:08:37.418] 📋 获取所有连接信息: 1个连接 [03-23 13:08:37.418] - 连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 (连接时长: 18.8562652s) [03-23 13:08:37.418] 📤 准备发送回复消息给用户: ZengQingMing [03-23 13:08:37.418] ✅ 已开始发送回复消息: 思考中... [03-23 13:08:37.418] 🔄 开始转发消息到SmartClaw [03-23 13:08:37.418] 📤 发送消息到SmartClaw: Object {"data": Object {"content": String("好像通了"), "event": Null, "from_user_name": String("ZengQingMing"), "msg_signature": String("d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a"), "msg_type": String("text"), "nonce": String("1774420742"), "raw_body": String(""), "timestamp": String("1774242517")}, "type": String("wechat_message")} [03-23 13:08:37.418] ✅ 企业微信消息处理完成,返回 success [03-23 13:08:37.419] 📤 开始发送企业微信消息 [03-23 13:08:37.420] 📋 获取所有连接信息: 1个连接 [03-23 13:08:37.420] - 连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 (连接时长: 18.858536s) [03-23 13:08:37.420] 📢 WebSocket连接池广播消息到 1 个SmartClaw连接 [03-23 13:08:37.420] ✅ 发送消息到SmartClaw连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 [03-23 13:08:37.421] ✅ 消息已成功转发到SmartClaw [03-23 13:08:37.432] 📨 收到消息: {"data":{"content":"我收到了你的消息,正在处理...","from_user_name":"ZengQingMing","msg_type":"text","timestamp":1774242517},"type":"wechat_message_response"} [03-23 13:08:37.438] 📱 收到SmartClaw的微信消息回复 [03-23 13:08:37.438] 回复发送者: ZengQingMing [03-23 13:08:37.438] 回复内容: 我收到了你的消息,正在处理... [03-23 13:08:37.438] 📤 开始发送企业微信消息 [03-23 13:08:37.756] 获取到访问令牌: mUca6bQOJQ3fPnLdoZU9__QOLXUnBU9amY9yl-y1QJCb3oumKzRhKS_poGcXkOzaA58q221dGtVGISkQANsamvXYpM-q5bCQs-ok_WpzqZwBCiBuiVkZpzyQoBxPE_OKUCLvMKQW0Rx381LOBMK8G34ngBvUodnWo9hlvosPHe48qLpunLdQJjXtekpJe0HHOaAAoWfWWJLY1G60IMPIvA [03-23 13:08:37.811] 获取到访问令牌: mUca6bQOJQ3fPnLdoZU9__QOLXUnBU9amY9yl-y1QJCb3oumKzRhKS_poGcXkOzaA58q221dGtVGISkQANsamvXYpM-q5bCQs-ok_WpzqZwBCiBuiVkZpzyQoBxPE_OKUCLvMKQW0Rx381LOBMK8G34ngBvUodnWo9hlvosPHe48qLpunLdQJjXtekpJe0HHOaAAoWfWWJLY1G60IMPIvA [03-23 13:08:38.187] ✅ 消息发送成功 [03-23 13:08:38.211] ✅ 消息发送成功 [03-23 13:08:38.211] ✅ 企业微信回复消息发送成功 [03-23 13:08:48.436] 📋 获取所有连接信息: 1个连接 [03-23 13:08:48.436] - 连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 (连接时长: 29.8742601s) 🔍 测试WebSocket连接 - 发现 1 个连接 📤 准备向连接 26dd6cb5-c305-421d-a8a3-753d0455b1c6 发送测试消息 ✅ 模拟发送测试消息: {"message":"连接健康检查","timestamp":1774242528,"type":"health_check"} 🧪 测试WebSocketConnection的send方法 📤 send方法测试结果: {"connection_id":"26dd6cb5-c305-421d-a8a3-753d0455b1c6","test_message":"这是send方法的测试消息","type":"test_send"} 🧪 测试WebSocketConnection的send_and_wait方法 ⏱️ send_and_wait方法测试结果: {"connection_id":"26dd6cb5-c305-421d-a8a3-753d0455b1c6","request":"这是send_and_wait方法的测试请求","response":"模拟响应数据","timeout":5000,"type":"test_send_and_wait"} [03-23 13:08:48.572] 📨 收到消息: {"service":"smartclaw","timestamp":1774242528,"type":"heartbeat"} [03-23 13:08:48.572] 💓 收到心跳消息 [03-23 13:08:52.293] 📨 收到消息: {"service":"smartclaw","timestamp":1774242532,"type":"heartbeat"} [03-23 13:08:52.293] 💓 收到心跳消息