
后端即时通讯插件系统前端消息路由AI 应用【免费下载链接】openilink-hub开源微信 Bot 管理平台 App 应用市场 | Self-hosted WeChat Bot Platform with App Marketplace | Lark · Slack · Discord · DingTalk · GitHub · Notion · 20 Apps | AI Tools | 7 Language SDKs项目地址https://gitcode.com/gh_mirrors/op/openilink-hub点击查看免费下载OpeniLink Hub 是一个开源的微信 Bot 管理平台内置WebSocket 实时推送与Webhook HTTP 回调两条消息转发通道微信消息进来后Hub 会按你选的方式把消息毫秒级推送到你自己的服务。本文用 4 个典型场景讲清楚两种通道的配置思路、消息格式和安全签名新手照着做即可跑通。两条通道先看懂再选型Hub 的消息分发核心逻辑在 internal/sink/ 目录下维度WebSocket 通道Webhook 通道通信方向你的服务主动连Hub长连接收消息Hub主动 POST到你的服务实时性毫秒级无网络穿透要求依赖你的服务可达性适用环境内网、无公网 IP、本地脚本有公网地址的服务、服务器集群离线补发自动补发断线期间漏掉的消息无靠你自己的重试附加能力可在连接上直接发回微信支持 JS 脚本沙箱、鉴权、自动回复一句话总结有长连接条件选 WebSocket只有 HTTP 入口选 Webhook两者可以并存。场景一WebSocket 实时推送推荐首选1. 用 API Key 建立连接每个 Bot 可以创建多个 Channel通道每个 Channel 自带一个 API Key。连接地址形如GET /api/ws?key{你的API_KEY}认证逻辑见 internal/api/ws_handler.goKey 无效或通道被禁用时直接返回 401。连接成功后Hub 会立即下发一帧init告诉你通道和 Bot 的初始状态{type: init, data: {channel_id: ch_xxx, channel_name: default, bot_id: bot_xxx, bot_status: connected}}2. 收消息、发消息帧之后每条微信消息都会以message帧推过来包含seq_id、sender、items文本/图片/语音/文件等等字段协议定义在 internal/relay/protocol.go。你的客户端还可以在同一条连接上反向发消息发send_text帧即可把文本发到指定微信用户Hub 处理完会回一帧send_ack确认结果还支持send_typing输入中状态、get_config查询会话配置。完整帧说明见 internal/api/ws_handler.go。连接保活也很简单服务端每 50 秒发一次 Ping客户端收到客户端级ping时回pong即可参数定义在 internal/relay/conn.go。想 3 分钟验证连接项目自带一个交互式测试客户端直接运行node example/ws-test.mjs ws://localhost:9800/api/ws?keyAPI_KEY连上后输入send 用户ID 你好就能收发双向消息脚本在 example/ws-test.mjs。3. 断线重连自动补发漏消息这是 WebSocket 通道最实用的设计通道会记录last_seq已消费到的消息序号重连时 Hub 自动把断线期间最多 100 条漏掉的消息按序重放再更新游标。补发逻辑见 internal/api/ws_handler.go。也就是说短暂网络抖动不会丢消息。4. App 开发者的两个 WebSocket 端点如果你开发的是 App 而非普通客户端Hub 提供两种粒度详见 docs/app-development.md按安装连接GET /bot/v1/ws?token{app_token}只收自己这个安装实例的事件适合自托管集成端点实现在 internal/api/bot_api_ws.go按 App 连接GET /bot/v1/app/ws?app_id{app_id}secret{webhook_secret}一条连接收该 App 所有安装实例的事件适合托管型第三方 App。Hub 的事件投递优先级是安装级 WS → App 级 WS → Webhook POST → 丢弃。也就是说只要 WS 连着事件就走 WS不会重复走 Webhook。场景二Webhook HTTP 回调1. 配置回调地址与鉴权在 Bot 的 Channel 配置里填入 Webhook URL。Hub 会把每条消息的 JSON 负载 POST 过来负载结构定义在 internal/sink/webhook.go核心字段{ event: message, channel_id: ch_xxx, bot_id: bot_xxx, seq_id: 123, sender: wxid_abc, msg_type: text, content: 你好, timestamp: 1711234567890, items: [{type: text, text: 你好}] }配置支持三种鉴权方式internal/sink/webhook.gobearerAuthorization 头、header自定义请求头、hmac自动加X-Hub-Signature头值为请求体的 HMAC-SHA256 十六进制摘要。生产环境强烈建议开 hmac否则任何人都能向你的回调地址伪造消息。2. 脚本沙箱改请求、自动回复Webhook 通道内置了一个 JS 脚本沙箱基于 goja可在请求发出前和响应回来后各跑一段逻辑能力见 internal/sink/webhook.gomatch text,image—— 只转发指定类型的消息其余自动跳过connect api.example.com—— 白名单限制脚本可改写的目标域名grant reply,skip—— 声明脚本可用reply()回复微信、skip()取消本次投递onRequest(ctx)里可改ctx.req的 URL、头、BodyonResponse(ctx)里可解析响应并调ctx.reply(回复内容)自动回给用户。不写脚本时也有兜底如果你的服务在 HTTP 响应体里返回{reply: ...}Hub 会自动把这段文字回复到微信internal/sink/webhook.go。脚本执行有 5 秒超时保护防止拖垮投递链路。3. App 事件的签名验证如果走的是 App 体系的事件投递DispatcherHub 每次 POST 都会带上签名头internal/app/delivery.go请求头含义X-App-Id应用 IDX-Installation-Id安装实例 IDX-TimestampUnix 秒级时间戳X-Signaturesha256HMAC-SHA256(webhook_secret, {timestamp}:{body})服务端用安装时拿到的webhook_secret按同样算法重算摘要比对即可防止伪造事件。投递超时为 3 秒响应非 2xx 会按 即时 → 10 秒 → 60 秒 的策略重试慢任务请返回{reply_async: true}表示稍后通过 Bot API 异步推送结果。场景四选一张表定方案你的情况推荐通道理由本地脚本/内网服务收消息WebSocket无需公网 IP断线自动补发云上有公网服务的正式业务Webhook hmac 鉴权无状态、易横向扩展托管型第三方 App多租户App 级 WebSocket一条连接服务所有安装实例想给微信自动回复/转媒体Webhook 脚本沙箱reply()一行搞定支持转发图片视频排错与进阶技巧WS 连上后没收到init多半是 Key 错误或通道被禁用Hub 会返回invalid or disabled key401。Webhook 一直失败查 Hub 后台的投递日志每次 POST 的请求、响应、耗时都落库了实现见 internal/sink/webhook.go。按人/按词过滤Channel 支持 FilterRule可按用户 ID、关键词、消息类型过滤后再转发结构见 internal/store/channel.go。消息链路追踪每条消息从收到到投递的完整耗时链路都有 Trace 记录出问题一眼看到卡在哪一步。延伸阅读完整 App 开发协议事件封装、Bot API、OAuth 安装流程docs/app-development.mdWebSocket 中继 Hub 与连接管理internal/relay/hub.go、internal/relay/conn.goWebhook 投递与脚本沙箱internal/sink/webhook.goApp 事件签名投递internal/app/delivery.go本地调试 Mock Server 文档docs/mock-server.md赞分享后端即时通讯插件系统前端消息路由AI 应用【免费下载链接】openilink-hub开源微信 Bot 管理平台 App 应用市场 | Self-hosted WeChat Bot Platform with App Marketplace | Lark · Slack · Discord · DingTalk · GitHub · Notion · 20 Apps | AI Tools | 7 Language SDKs项目地址https://gitcode.com/gh_mirrors/op/openilink-hub点击查看免费下载相关推荐如何利用libSQL实现实时通信WebSocket与消息推送的终极指南如何利用libSQL实现实时通信WebSocket与消息推送的终极指南 libSQL是一个强大的C数据库访问库支持SQLite、MySQL、Postgr数据库关系型数据库嵌入式数据库后端数据同步Bisheng消息推送WebSocket实时通信Bisheng消息推送WebSocket实时通信 引言为什么需要实时消息推送 在AI应用开发中实时通信是提升用户体验的关键技术。传统HTTP请求 响应模AI 应用AI AgentLLMOps工作流自动化RAG后端前端daily-code实时通信WebSocket实时通知与消息推送daily code实时通信WebSocket实时通知与消息推送 痛点传统轮询的局限性 在现代Web应用中实时通信已成为提升用户体验的关键技术。传统的HT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考