关于strophe 通过 connection manager 连接到 openfire server 失败 的原因初阶分析http://xmpp.org/extensions/xep-0206.ht

本文主要是介绍关于strophe 通过 connection manager 连接到 openfire server 失败 的原因初阶分析http://xmpp.org/extensions/xep-0206.ht,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考

协议 XMPP XEP-0206 (BOSH)

http://xmpp.org/extensions/xep-0206.html


通过BOSH 创建 会话经历的一般步骤包括

(1)Session Creation 会话创建请求

(2)Authentication 身份验证

(3)Restart request 重启请求

(4)Resource binding request资源绑定请求


问题就出现在第三步的时候,之前步骤都是正确的

参考strophe不通过connection manager 连接到openfire的时候走的就是这个标准流程


(3)(4)数据流如下

(3)Restart request 重启请求
request:
<body rid='539419237' xmlns='http://jabber.org/protocol/httpbind' sid='e957c613'
to='tes-pc-10-05' xml:lang='en' xmpp:restart='true' xmlns:xmpp='urn:xmpp:xbosh'/>


response:
<body xmlns="http://jabber.org/protocol/httpbind" xmlns:stream="http://etherx.jabber.org/streams">
<stream:features>
<compression xmlns="http://jabber.org/features/compress">
<method>zlib</method>
</compression>
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/>
<session xmlns="urn:ietf:params:xml:ns:xmpp-session"/>
</stream:features>
</body>

(4)Resource binding request资源绑定请求
request:
<body rid='539419238' xmlns='http://jabber.org/protocol/httpbind' sid='e957c613'>
<iq type='set' id='_bind_auth_2' xmlns='jabber:client'>
<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
</iq>
</body>

response:
<body xmlns='http://jabber.org/protocol/httpbind'>
<iq xmlns="jabber:client" type="result" id="_bind_auth_2" to="tes-pc-10-05/e957c613">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<jid>a@tes-pc-10-05/e957c613</jid>
</bind>
</iq>
</body>


而 connectionmanager 在 3之后就不再返回任何数据一直到超时。


而另外一个库JSJaC,则可以顺利通过 connection manager连上openfire 这是因为

他把3,4合并在一起执行了

数据流如下

request:
<body 
rid='812216' 
sid='cjyvqeef8619c' 
xmlns='http://jabber.org/protocol/httpbind' 
key='e6711e9a605a2a1a28257baa57ee7fc69e5eea86' 
xmpp:restart='true' <!--  重启请求-->
xmlns:xmpp='urn:xmpp:xbosh'>

<!-- 资源绑定-->
<iq xmlns="jabber:client" type="set" id="bind_1">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<resource xmlns="urn:ietf:params:xml:ns:xmpp-bind">jsjac_simpleclient</resource>
</bind>
</iq>

</body>

response:
<body xmlns='http://jabber.org/protocol/httpbind'>
<iq type="result" id="bind_1" to="tes-pc-10-05/cjyvqeef8619c">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<jid>a@tes-pc-10-05/jsjac_simpleclient</jid>
</bind>
</iq>
</body>

我自己编写了一个js文件修复了这个问题,上传到了我的资源。

下载地址  http://download.csdn.net/detail/suncaishen/4282736

这篇关于关于strophe 通过 connection manager 连接到 openfire server 失败 的原因初阶分析http://xmpp.org/extensions/xep-0206.ht的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/711014

相关文章

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf