UDev
UDev
  • 发布:2026-08-14 11:25
  • 更新:2026-08-14 11:27
  • 阅读:24

uni-push 2.0版本 WEB 浏览器里 链接异常,无法推送

分类:uniCloud

web 端 uni.getPushClientId 后 success 正常返回了 cid。推送消息的 web 侧的时候,提示 3d68a77fec31689d423cb4e062ce3a5a=target user is invalid。前端调试界面看到有 chunk-vendors.v1.js:31226 WebSocket connection to 'wss://wshzn.gepush.com:5223/nws' failed: 。似乎是无法链接到个推。

请问是什么情况,大概一个月之前是可以正常推送的。 可以确定的是:已经正常配置了推送的相关信息,因为之前是可以推送的。

2026-08-14 11:25 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uniCloud 官方技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据你描述的现象,可以拆成两个独立的问题来看:

1. target user is invalid 报错的直接原因

这个错误表示个推服务端认为目标 cid 无效。结合知识库中类似案例,最常见的原因是:

  • cid 来源环境不匹配:如果你是在 HBuilderX 标准基座(或浏览器直接预览)获取的 cid,却用正式包/自定义基座的 appid 去推送,个推会判定该 cid 不属于当前应用,从而报 target user is invalid
  • 映射表脏数据:如果之前测试时往 opendb-deviceuni-id-device 等表写入过测试 cid,而当前实际设备已重新安装或清空数据,服务端按旧映射推送时也会报此错。

建议先验证:用当前 Web 端获取到的 cid,直接在云函数里写死 push_clientid 测试推送(不经过 user_id 映射),看是否还报同样的错。如果写死 cid 能推通,说明问题出在 uni-id-deviceopendb-device 表的映射关系上,需要检查登录后是否正确上报了 push_clientid(参考 uni-id-cosetPushCid 方法)。

2. WebSocket 连接 wss://wshzn.gepush.com:5223/nws 失败

这个域名是 uni-push 2.0 Web 端用于保持长连接、接收在线消息的服务地址。一个月前正常、现在突然失败,可能的原因包括:

  • 网络环境变化:公司网络、防火墙、代理或浏览器安全策略(如混合内容拦截、wss 被拦截)导致无法建立 WebSocket 连接。
  • 浏览器限制:部分浏览器对非标准端口(5223)的 wss 连接有限制,或页面本身是通过 http 加载导致 wss 被拦截。
  • 服务空间/应用配置变更:虽然你确认配置未改,但建议检查 uni-push 后台是否意外关闭了 Web 推送通道,或应用状态异常。

建议排查步骤

  1. 换网络环境(如手机热点)和浏览器(Chrome 无痕模式)测试,排除本地网络拦截。
  2. 检查浏览器控制台是否有更详细的错误码(如 403、502、证书错误等)。
  3. 确认当前页面协议是 https,且没有内容安全策略(CSP)拦截 wss 连接。
  4. 如果 WebSocket 始终无法连接,Web 端在线推送会失效,但离线推送(通过个推 restapi 直接下发)理论上仍可到达——不过 Web 端没有真正的"离线"概念,所以 WebSocket 断开基本等于 Web 推送不可用。

总结

target user is invalid 和 WebSocket 连接失败可能是两个独立问题:前者是 cid 有效性/映射问题,后者是网络或通道问题。建议先按第 1 点用写死 cid 的方式验证推送链路本身是否通畅,再集中排查 WebSocket 连接环境。

如果确认 cid 有效且网络无拦截,问题仍复现,建议携带 HBuilderX 版本、服务空间提供商(阿里云/腾讯云/支付宝云)、浏览器控制台完整报错截图,到 DCloud 社区 发帖或提交工单进一步排查。

内容为 AI 生成,仅供参考

要回复问题请先登录注册