惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
D
Docker
The Cloudflare Blog
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
月光博客
月光博客
B
Blog RSS Feed
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
B
Blog
IT之家
IT之家
美团技术团队
Engineering at Meta
Engineering at Meta
C
Check Point Blog
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
S
SegmentFault 最新的问题
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Apple Machine Learning Research
Apple Machine Learning Research
U
Unit 42
H
Help Net Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
博客园 - Franky
PCI Perspectives
PCI Perspectives
J
Java Code Geeks
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
腾讯CDC
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes
量子位
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
有赞技术团队
有赞技术团队
Schneier on Security
Schneier on Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - delphi中间件

领域服务与领域事件 业务规则和模型 限界上下文与统一语言 领域驱动 ActiveRecord ORM RAD(速成应用开发) unigui插件框架 工厂流水线式自动生产UNIGUI WEB软件 delphi cs\web一种统一的界面风格 - delphi中间件 - 博客园 动态生成unidbgrid 单据工厂 用json元数据填充模板 mormot2 ORM rest vs jsonrpc SSE技术详解:使用 HTTP 做服务端数据推送应用的技术 http持久连接 json-rpc 2.0 MCP服务器 RTTI对性能的影响 频繁地创建和销毁对象 TMultiPartFormData 雪花ID core.binary.pas TJSONToDataSetBridge TIcsMQTTServer 咏南WEB开发框架 unigui ajax交互 UnimList卡片显示 UnimTabPanel tabsheet在下面 unipagecontrol tabsheet在下面 unitreemenu自动显示滚动条 uniimbitbtn手机按钮一些设置
mqtt即时通讯
delphi中间件 · 2026-07-20 · via 博客园 - delphi中间件

1)为毛不用websocket?

原生WebSocket服务单机支撑万级连接就会出现内存、线程瓶颈;

移动端、IoT设备弱网环境频繁断连是常态:WebSocket断连后所有未推送消息直接丢失,需要业务手动缓存重推。

MQTT服务EMQX基于Erlang轻量进程模型,单机轻松支撑百万级并发长连接,内存占用极低,海量设备、多用户在线场景碾压WebSocket;

MQTT原生支持QoS1/QoS2消息持久化,断连重连后自动补发未接收消息,弱网场景无需自己写缓存逻辑。

2)主题订阅模型(实现私聊、群聊、广播)

MQTT采用分层主题通配符设计,天然适配各类通讯场景,无需复杂关系存储:

  个人私有消息:msg/user/{userId},仅当前用户订阅,实现一对一私聊;

   群聊频道:msg/group/{groupId},群内所有用户订阅,群发消息;

  全局系统广播:msg/system/all,全部在线用户接收公告;

  分类通知:msg/order/{userId}msg/notice/{userId},按业务模块隔离消息。

  通配符+单层匹配、#多层匹配,灵活批量订阅多类消息。

3)QoS消息质量等级,解决消息丢失痛点

  QoS0(最多一次):消息发完即丢弃,不重试,适合实时性要求高、丢失无影响的普通在线通知;

  QoS1(至少一次):保证消息一定送达,可能重复接收,适合聊天消息、业务告警;

   QoS2(恰好一次):握手确认,只接收一次,适合订单、支付、设备上报等不能重复的核心数据。

4)会话持久化 + 离线消息缓存

客户端连接时开启cleanSession=false,broker会保存当前订阅关系与未接收消息。

用户APP退出、断网、后台杀进程,所有未读消息全部缓存;

下次重新建立连接,自动批量推送离线消息,完美实现“离线存消息,上线自动读”,不用业务层额外存储。

5)遗嘱消息(异常下线自动通知)

客户端建立连接时预先设置遗嘱主题与消息,当客户端无心跳、网络异常、崩溃离线,broker自动向遗嘱主题发送预设消息,服务端可监听该主题,实时感知用户离线状态,替代复杂的心跳检测逻辑。

6)心跳保活机制

连接时指定心跳间隔,客户端定时上报心跳,长时间无心跳broker判定离线,精准管理连接状态,相比WebSocket自定义心跳逻辑更标准、低开销。