您的位置:首页 > 运维架构

openfire smack消息回执设置,处理掉包问题

2015-01-28 10:00 288 查看
在网络不稳定时,openfire容易出现掉包情况,原因是在客户端掉线时,openfire并不能马上知道客户端已经断线,至于要多久才能发现客户端断线,跟服务器端设置的Idle Connections 时间有关。默认为360秒。

为解决掉包问题,xmpp协议支持消息回执,这个只需在客户端发消息时设置要求回执就行,服务器端不需要另外设置。

使用smack设置消息回执方法

运行结果,在smack debug window中查看数据

test2发送消息给test1,消息id为Winlh-55





test1发送回执给test2,告诉test2消息Winlh-55已经收到





上边的方法只是客户端对客户端的消息回执,另外也可以在服务器端发送回执给客户端,告诉客户端已经收到消息

xmpp消息回执协议:

发送者message加上<request xmlns='urn:xmpp:receipts'/>要求接收者发送回执

<message id="e3539-31" to="test1@xxx.com" from="test2@xxx.com/pc" type="chat"><body></body><thread></thread><request xmlns='urn:xmpp:receipts'/></message>

接收者在收到消息后回复一条message,并把消息的id放到<received xmlns="urn:xmpp:receipts" id="e3539-31"/>,告诉发送者已经收到

<message to="test2@xxx.com/pc" from="test1@xxx.com"><received xmlns="urn:xmpp:receipts" id="e3539-31"/></message>

开发者在使用时,也可以根据业务需要定义自己的回执格式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: