xmpp:异步处理传入消息

时间:2011-04-26 20:35:49

标签: xmpp

我正在尝试编写XMPP客户端的实现(没有BOSH,直接TCP连接)。

试图弄清楚如何处理传入的消息以响应我自己的请求,并知道哪个响应与哪个请求有关,大多数协议标记请求带有一些唯一的id,服务器发送带有响应的id。

我已经看到了IQ节的ID参数,但报告它们是为了识别会话而不是唯一的消息......

处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

IQ节中的ID属性将请求(获取或设置)绑定到响应(结果或错误)。对于每个请求,应使用新ID。这是跟踪每个请求的响应的方法。

答案 1 :(得分:1)

新的RFC 6120很好地描述了智商的运作方式。确保您将发件人与收到的节的ID相匹配,以确保其他人不会猜测您的ID号。典型的模式是使用IQtracker,你可以这样调用(伪代码):

iq = create_xml_dom_that_is(<iq id='[counter++]' type='get' to='receiver'/>)
track(iq, callback)

当我们从接收器收到具有预期id的iq节,或者在没有得到响应的情况下达到某个时间跨度时,调用回调。