`

XMPP核心协议学习心得2

    博客分类:
  • XMPP
 
阅读更多

4.资源绑定

 

服务器向客户端声明资源绑定特性:

 

<stream:stream
    xmlns='jabber:client'
    xmlns:stream='http://etherx.jabber.org/streams'
    id='c2s_345'
    from='example.com'
    version='1.0'>
<stream:features>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
</stream:features>

客户端请求资源绑定

<iq type='set' id='bind_1'>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
</iq>

或者指定绑定的资源ID

<iq type='set' id='bind_2'>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
    <resource>resourceid</resource>
  </bind>
</iq>

此时有两种:

成功

服务器反馈绑定成功

 <iq type='result' id='bind_2'>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
    <jid>somenode@example.com/resourceid</jid>
  </bind>
</iq>

注意  此时 id已经被服务器修改成'bind_2' 而不是指定resourceid

失败

资源ID不能处理

  <iq type='error' id='bind_2'>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
    <resource>someresource</resource>
  </bind>
  <error type='modify'>
    <bad-request xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

客户端不允许绑定一个资源

  <iq type='error' id='bind_2'>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
    <resource>someresource</resource>
  </bind>
  <error type='cancel'>
    <not-allowed xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

资源ID已经在使用

<iq type='error' id='bind_2'>
  <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
    <resource>someresource</resource>
  </bind>
  <error type='cancel'>
    <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
  </error>
</iq>

 

 

 

分享到:
评论

相关推荐

    xmpp学习心得

    XMPP,全称为可扩展消息和出席(存在)协议,是一种用于实时通信和协作的开放标准。它起源于即时信息和出席协议(IMPP)...通过深入学习XMPP,我们可以理解如何构建安全、可扩展的实时通信解决方案,满足各种业务需求。

    XMPP简单demo

    1. **理解XMPP协议**:阅读XMPP RFC文档(RFC 6120, RFC 6121, RFC 6122等)以了解其核心概念和协议规范。 2. **选择XMPP库**:根据开发语言选择合适的XMPP库,例如Java有Smack,Python有 SleekXMPP,JavaScript有...

    openfire简介.pdf

    Openfire不仅遵循基本的XMPP协议(RFC3920),更进一步实现了XMPP-IM(RFC3921)协议,这使得它能够处理更加复杂的实时通信场景,如用户状态切换、消息订阅与通知等,为用户提供了一个全面的实时通信解决方案。...

    lTCP/IP心得

    TCP/IP心得主要涉及TCP的状态流程图机制、Linux网络协议栈数据收发流程以及ARP和TCP头部解析。在深入探讨这些知识点之前,先简单回顾一下网络协议的层次结构,包括应用层、传输层、网络层、数据链路层以及物理层。 ...

    chatingroom

    【标题】"chatingroom"揭示的是一款基于局域网的聊天软件,旨在提供一个简易的平台,让网络中的用户能够互相学习、交流心得。这款软件的特点在于它的易用性和实用性,面向的是对网络通信有需求,但又不希望过于复杂...

    安卓应用-电子图书-新语听书图书馆 v4.2.5.zip

    可能使用XMPP、MQTT等协议进行实时通信,或者利用Firebase等云服务来支持数据同步。为了保障用户隐私,还需要考虑数据加密和安全措施。同时,社交特性也可能包括用户个人资料管理、好友推荐算法、动态分享等复杂功能...

Global site tag (gtag.js) - Google Analytics