讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在Android端通过中间服务间接监听Redis订阅消息?

冬杰姑娘_2613

冬杰姑娘_2613

发布时间:2026-11-02 06:32:01

|

987人浏览过

|

来源于php中文网

原创

Android端无法直连Redis Pub/Sub,因系统限制后台长连接且无可靠重连机制;必须通过支持WebSocket的中间服务中转,该服务需校验权限、动态映射频道并转发消息。

如何在android端通过中间服务间接监听redis订阅消息?

Android 端不能直接订阅 Redis,因为 Redis 的 PUBSUB 是长连接、阻塞式协议,而 Android 原生不支持在主线程外稳定维持这种连接,且无法绕过系统对后台 Socket 的限制(尤其 Android 9.0+)。必须通过中间服务中转,否则要么连不上,要么被系统杀掉。

为什么不能在 Android 上直连 Redis Pub/Sub

Redis 的 SUBSCRIBE 命令要求客户端保持 TCP 连接并持续读取响应流,但 Android 在后台时会冻结或终止非前台进程的网络 I/O;JobIntentService 或 WorkManager 不支持长连接回调;AlarmManager 精确闹钟在 Android 9.0+ 被禁用,无法靠轮询模拟监听。实测中,直接用 Jedis 或 Lettuce 在 Android 上调用 pubsub().subscribe() 后,切后台 2 分钟内连接基本断开,且无可靠重连机制。

中间服务必须暴露 WebSocket 接口

Android 客户端只和中间服务通信,中间服务负责:连接 Redis、监听频道、将消息转成轻量帧(如 JSON)并通过 WebSocket 下推。关键点是:

  • 中间服务(如 Spring Boot)用 RedisMessageListenerContainer 监听频道,避免自己手写 PubSubConnection 状态管理
  • WebSocket 连接需带心跳(ping/pong),防止 NAT 超时断连;Android 端用 OkHttp 的 WebSocketListener 实现,不要用 Socket 原生封装
  • 消息体建议加字段 "channel" 和 "payload",便于客户端做路由分发,而不是把 Redis 的原始 message 对象原样透传

Android 端 WebSocket 连接要处理三类断连场景

中间服务只是转发层,不解决终端网络抖动问题。Android 端必须自行处理:

Sentinal Redis
Sentinal Redis

监控Redis服务器健康状况、内存、性能及BullMQ队列。检查队列深度、失败任务,分析慢查询并诊断问题。

下载
  • WebSocket 连接建立失败 → 回退到指数退避重试(初始 1s,上限 30s),不要无限重连
  • 连接中途断开(onFailure 或 onClosing)→ 清空本地订阅状态缓存,重发 JOIN 控制帧给中间服务
  • 收到中间服务发来的 {"type":"reconnect_required"} → 主动关闭当前连接,触发重连流程

注意:别把 Redis 频道名硬编码进 Android APK,应由中间服务统一分配并返回订阅 Token,避免客户端伪造频道名导致消息污染。

中间服务需支持动态频道映射与权限校验

真实业务中,用户只能收自己权限范围内的频道消息。中间服务不能简单把所有 Redis 频道全量透传,而应:

  • WebSocket 握手阶段验证 JWT 或 session token,提取用户 ID 和角色
  • 查 DB 或缓存,拿到该用户允许订阅的频道白名单(如 user:1001:notify、team:205:status)
  • 在 RedisMessageListenerContainer 中按需注册监听器,而非全局 psubscribe __keyevent@0__:*
  • 收到 Redis 消息后,先比对频道是否在白名单内,再转发给对应 WebSocket 连接

这个环节最容易被跳过,结果就是测试环境 OK,上线后一个用户能收到其他用户的消息。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4769

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4335

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

8252

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

663

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

776

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

8402

2024.04.07

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1180

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1276

2024.04.07

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

0

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn