IM在消息交互时,如果websocket断了,消息可能到了,也可能没到,怎么处理这个异常情况?
还是说在一端的send方法就会报错了,就知道了消息没有送出去?
我想讨论的就是是否需要增加一个ACK机制来确保消息成功到达接受人端
一个方法是加入ack机制
每收到一条消息就立即发回一个ACK
IM这一块需要整理客户端的组件结构
像负责页面渲染的,接受消息,发送消息,缓存消息队列,中断重连,异常情况处理等等
html5中有webworker多线程机制,也有本地存储机制,都可以利用起来加强IM的执行效果。
html5还可以监控每个端在线/脱机状态,这个正好可以加到联系人在线状态中
ajax请求改变后的页面状态可以作为一个新的url进行页面缓存,然后可以被回退出来,不需要发送任何请求。
但服务器端一定要无状态才行
针对ack机制找了资料: