我正在阅读XEP-0124 / BOSH规范,不理解第9.1章“请求认可”中的以下句子:
唯一的例外是,在会话创建响应之后,如果值是响应请求的“rid”,则连接管理器不应该在任何响应中包含'ack‘属性。
用我的话说:如果响应专用于最后一个也是唯一的请求(在连接管理器的队列中),我不应该发送ACK。
但是:有一个客户端拥有自己的状态机。也许客户端已经发送了第二个请求--第一个请求没有得到答复--并且期望得到两个答案。在这种情况下,除了取消“旧”请求的ACK之外,客户端和连接管理器都必须设置ACK。
结论:当允许多次请求时,连接管理器必须设置ACK。
我不确定,但是这个文本段落是否只专门用于客户端没有发送更多请求,但是会话创建阶段已经成功完成,并且由于“等待”超时,连接管理器必须向客户端发送"ping“消息的情况?
发布于 2011-04-04 10:33:27
所以,当我读到:
如果您收到的最高RID (按顺序排列)为11 (在此之后您可能收到了14条,但由于缺少12和13条,则不符合顺序),则您将响应:
如果客户端发送了多个请求,而服务器还不知道这些请求,这是可以的。这是因为当客户端发送11次时,服务器没有被保存的连接,并且它会在相同的连接上响应。在这种情况下,发出了两个请求(11和12),但是每个请求的响应都是相同的请求,因为服务器总是有一些东西需要立即发回。
https://stackoverflow.com/questions/5004305
复制相似问题