[2018-05-27 18:26:38 最后更新]
urn:ietf:params:xml:ns:xmpp-session 所在的 rfc 协议[Pidgin 客户端必须的]
一直用 openfire/spark 组合来测试 xmpp 协议,一日用 Pidgin 登录的时候居然失败。调试之下才发现原来 Pidgin 需要服务器支持 urn:ietf:params:xml:ns:xmpp-session。
知道原因了解决当然不难,简单的回应即可。
借网友的说明如下:
但这个的标准官方说明在哪呢,我仔细查看了 xmpp 的核心协议并没有这个内容! (参考 http://wiki.jabbercn.org/%E5%88%86%E7%B1%BB:XMPP%E6%A0%B8%E5%BF%83RFC)
其实这是在 rfc3921 中,参考 http://wiki.jabbercn.org/RFC3921
其实这个协议已经被 http://wiki.jabbercn.org/RFC6122 替换了,可能是因为 Pidgin 比较旧,所以仍然保留了这个旧的代码吧。
所以可以看到 xmpp 即使是最小实现,兼容性也不是那么好完善解决的。所以实现完整的 xmpp 实在没必要:兼容性太糟糕了。
--------------------------------------------------
https://blog.csdn.net/huyoo/article/details/24353105
第四步: 请求一个新的session
在 SASL 交涉完成之后或者可选资源绑定之后, 客户端必须建立一个 session 来开始即时消息发送和接收.
Client: 客户端向服务器发送请求:
[html] view plain copy
<iq to='example.com' type='set' id='sess_1'>
<session xmlns='urn:ietf:params:xml:ns:xmpp-session'/>
</iq>
Server: 服务器发回一个<iq> 片段表明 session 是否成功创建.
创建成功的消息类似于:
[html] view plain copy
<iq from='example.com' type='result' id='sess_1'/>
如果服务器未能创建 session, 服务器将会回复一个如下消息或者其他类型的错误消息.
[html] view plain copy
<iq from='example.com' type='error' id='sess_1'>
<session xmlns='urn:ietf:params:xml:ns:xmpp-session'/>
<error type='auth'>
<forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>