IM交互中的ACK机制使用

Wesley13
• 阅读 820

IM在消息交互时,如果websocket断了,消息可能到了,也可能没到,怎么处理这个异常情况?
还是说在一端的send方法就会报错了,就知道了消息没有送出去?
我想讨论的就是是否需要增加一个ACK机制来确保消息成功到达接受人端
一个方法是加入ack机制
每收到一条消息就立即发回一个ACK

IM这一块需要整理客户端的组件结构
像负责页面渲染的,接受消息,发送消息,缓存消息队列,中断重连,异常情况处理等等
html5中有webworker多线程机制,也有本地存储机制,都可以利用起来加强IM的执行效果。
html5还可以监控每个端在线/脱机状态,这个正好可以加到联系人在线状态中
ajax请求改变后的页面状态可以作为一个新的url进行页面缓存,然后可以被回退出来,不需要发送任何请求。
但服务器端一定要无状态才行 

针对ack机制找了资料:

tcp报文到达确认(ack)机制 :http://blog.csdn.net/wjtxt/article/details/6606022

阿里巴巴 jstorm ack机制: http://www.aboutyun.com/thread-10892-1-1.html

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)
1、引言在中大型IM系统中,聊天消息的唯一ID生成策略是个很重要的技术点。不夸张的说,聊天消息ID贯穿了整个聊天生命周期的几乎每一个算法、逻辑和过程,ID生成策略的好坏有可能直接决定系统在某些技术点上的设计难易度。有中小型IM场景下,消息ID可以简单处理,反正只要唯一就行,而中大型场景下,因为要考虑到分布式的性能、一致性等,所以要考虑的问题
Wesley13 Wesley13
3年前
ActiveMQ消息传送机制以及ACK机制详解
 AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。一.ActiveMQ消息传送机制  Producer客户端使用来发送消息的,Consumer客户端用来消费消息;它们的协同中心就是ActiveMQbr
Stella981 Stella981
3年前
IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?
1、前言在IM这种讲究高并发、高消息吞吐的互联网场景下,MQ消息中间件是个很重要的基础设施,它在IM系统的服务端架构中担当消息中转、消息削峰、消息交换异步化等等角色,当然MQ消息中间件的作用远不止于此,它的价值不仅仅存在于技术上,更重要的是改变了以往同步处理消息的思路(比如进行IM消息历史存储时,传统的信息系统作法可能是收到一条消息就马上同步存
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
融云IM即时通讯 融云IM即时通讯
1个月前
融云IM干货丨IM聊天室中客户端如何确保消息同步的准确性?
客户端确保消息同步的准确性主要依赖于以下几个关键技术和策略:全局唯一的消息ID生成策略:为了保证消息可以通过ID进行识别和排重,IM系统采用全局唯一的消息ID生成策略。这种策略可以确保每条消息都有一个唯一的标识符,从而在消息的发送和接收过程中避免重复。客户
融云IM即时通讯 融云IM即时通讯
1个月前
融云IM干货丨IM服务消息推送,客户端更新后,如何验证消息是否被成功接收?
客户端更新后,验证消息是否被成功接收可以采取以下几种方法:确认机制(ACK):客户端在成功接收并处理消息后,向服务端发送确认信号(ACK)。如果服务端在一定时间内没有收到ACK,可以认为消息未被成功接收,服务端可以进行重试发送。心跳机制:客户端和服务端定期