`

Jingle XMPP stanza对应的XML schema

    博客分类:
  • XMPP
阅读更多

一个典型的Jingle XMPP stanza:

<iq from='romeo@montague.lit/orchard'
    id='xs51r0k4'
    to='juliet@capulet.lit/balcony'
    type='set'>
  <jingle xmlns='urn:xmpp:jingle:1'
          action='session-initiate'
          initiator='romeo@montague.lit/orchard'
          sid='a73sjjvkla37jfea'>
    <content creator='initiator' name='voice'>
      <description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
        <payload-type id='96' name='speex' clockrate='16000'/>
        <payload-type id='97' name='speex' clockrate='8000'/>
        <payload-type id='18' name='G729'/>
        <payload-type id='0' name='PCMU' />
        <payload-type id='103' name='L16' clockrate='16000' channels='2'/>
        <payload-type id='98' name='x-ISAC' clockrate='8000'/>
      </description>
      <transport xmlns='urn:xmpp:jingle:transports:ice-udp:1'
                 pwd='asd88fgpdd777uzjYhagZg'
                 ufrag='8hhy'>
        <candidate component='1'
                   foundation='1'
                   generation='0'
                   id='el0747fg11'
                   ip='10.0.1.1'
                   network='1'
                   port='8998'
                   priority='2130706431'
                   protocol='udp'
                   type='host'/>
        <candidate component='1'
                   foundation='2'
                   generation='0'
                   id='y3s2b30v3r'
                   ip='192.0.2.3'
                   network='1'
                   port='45664'
                   priority='1694498815'
                   protocol='udp'
                   rel-addr='10.0.1.1'
                   rel-port='8998'
                   type='srflx'/>
      </transport>
    </content>
  </jingle>
</iq>

 

从XEP-0166的XML Schema可以看出, <jingle>元素下的<content>元素minOccurs为0, maxOccurs为无限.  而<content>元素下的子元素未定义, 需要到别的XEP去看, minOccurs为0, maxOccurs为无限.

 

从XEP-0167的XML Schema可以看出, <description>元素下的<payload-type>元素minOccurs为0, maxOccurs为无限.

 

从XEP-0176的XML Schema可以看出, <transport>元素下的<candidate>元素minOccurs为1, maxOccurs为无限.

 

结合起来, 意味着<jingle>元素作为<iq>元素的子元素, 其下面可以包含任意多个<content>子元素, 而<content>子元素下面可以包含任意的<description>元素和<transport>元素.

 

所以, Libjingle在实现Jingle协议的时候, 设计了对应的数据结构来实现各种可能的情况, 导致代码看起来很晦涩, 其实对照Jingle的XML Schema来看, 就很容易理解了.

分享到:
评论

相关推荐

    XMPP JINGLE Jar包

    XMPP JINGLE Jar包 可以实现语音聊天功能

    如意通(rm)源代码 2.3.1 delphi xmpp jabber客户端

    源代码中会包含对应的XML解析和生成,以及事件驱动的编程模型。 2. **TCP连接与心跳机制**:XMPP基于TCP/IP进行通信,客户端需要建立并维护与服务器的持久连接。源码中会涉及TCP套接字编程,包括连接建立、心跳包...

    beem -- 一款基于xmpp jingle 的一款android 聊天工具

    XMPP是一种基于XML的实时通信协议,最初由 Jabber 开发团队设计,现已成为互联网工程任务组(IETF)的标准。它主要用于即时消息传递和在线状态感知,具有高度可扩展性,支持多种应用,如聊天、文件传输、视频会议等...

    xmpp,the Definitive Guide

    XMPP是一种基于XML的开放标准协议,用于实现即时消息(IM)、在线状态通知(如可用性或“在线”状态)以及更广泛范围内的实时通信服务。 本书由三位作者共同编写完成:Peter Saint-Andre、Kevin Smith 和 Remko Tronç...

    AgsXMPP(带Jingle扩展)

    XMPP是一种基于XML的实时通信协议,广泛用于即时通讯、在线状态管理和多方通信。AgsXMPP库的核心目标是简化开发者在.NET环境中构建XMPP应用程序的过程。 Jingle是XMPP协议的一个重要扩展,它为XMPP网络提供了音视频...

    XMPP.zip_xmpp _xmpp csharp

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯(IM)和在线状态管理。在.NET框架下,开发者可以利用C#语言来实现XMPP协议,以创建实时、双向的通信应用。...

    XMPP 常用XEP协议

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛应用于即时消息、在线状态管理和多人聊天等场景。XEP(XMPP Extension Protocols)是XMPP的扩展协议,用来增加XMPP的基本功能...

    xmpp协议讲解

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,主要用于即时消息和在线状态的传输。这个协议的设计灵感来源于早期的Jabber协议,由Jabber开源社区发展而来,并在2003年被IETF...

    IM 基于XMPP协议

    XMPP是一种基于XML的开放标准,最初设计用于即时通讯,但后来扩展到更广泛的领域,如物联网和企业级通信。它的主要特点是分层架构和灵活性,允许开发者根据需求定制扩展。XMPP协议的核心组件包括客户端、服务器和...

    XEP-Jingle协议文档

    XEP-Jingle协议由一系列XML元素组成,这些元素通过XMPP信令通道进行交换,用于协商会话的各个参数,包括媒体类型(音频、视频等)、编码格式、传输地址和端口等。这些元素的交互构成了会话的完整生命周期,从发起...

    XMPP协议及NAT穿透介绍文档

    Jingle定义了一套用于媒体会话建立和管理的XML信令协议,它允许XMPP客户端通过NAT进行P2P通信。 综上所述,"XMPP协议及NAT穿透介绍文档"可能是阐述如何在XMPP系统中实现NAT穿透,以便用户在不同网络环境下顺畅地...

    XMPP权威指南.pdf

    首先,XMPP的基础知识涵盖其地址结构、XML流和通讯原语。XMPP地址由域、用户、资源组成,支持国际化和统一资源标识(URI)。XMPP通过定义XML流,实现消息、出席、信息/查询等通讯原语的传输。 XMPP架构具备高度的...

    XMPP权威指南-中文

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML(可扩展标记语言)的开放标准网络通信协议。XMPP最初被设计用于即时消息(Instant Messaging)和在线状态呈现(Presence Information)应用,但...

    xmpp客户端协议实现源代码

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛应用于即时通讯、VoIP、协作软件等场景。本资源包含了一个名为"smack"的库的源代码,该库是实现XMPP客户端协议的一个流行选择...

    聊天实现 xmpp

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,主要用于构建即时消息(IM)和在线状态服务。在iOS平台上实现聊天功能,尤其是群聊和语音通话,XMPP是一个常用的选择,因为它提供...

    webrtc和jingle技术

    Jingle,另一方面,是基于XMPP(Extensible Messaging and Presence Protocol)的协议,用于在客户端之间建立和管理实时媒体会话。它定义了一套XML格式的信令消息,用于会话的邀请、协商、修改和终止。Jingle可以...

    XMPP研究.zip

    9. **API和库**:许多编程语言都有对应的XMPP库,如Python的 SleekXMPP,Java的Smack,JavaScript的Strophe.js等,便于开发者集成XMPP功能。 10. **应用领域**:XMPP不仅应用于即时通讯,还广泛应用于物联网、智能...

    XMPP权威指南 -中文.pdf

    XMPP利用XML流进行通信,这种设计允许它非常容易地进行扩展。XMPP的核心通讯原语包括消息(message)、出席(presence)和信息/查询(info/query)。出席机制在XMPP中非常关键,它允许实体相互之间发布和订阅出席...

    XMPP_message_push_protocol_study

    XMPP(可扩展消息和出席协议)是一种基于XML的开放标准通信协议,主要用于即时消息(IM)和在线存在信息的实时交换。XMPP最初由Jabber社区开发,后来成为了互联网工程任务组(IETF)标准化的开放即时通信协议。它被...

    iOS XMPP - 简书1

    5. **可扩展性**:XMPP标准定义了基础框架,并允许通过扩展机制添加新功能,如Jingle用于音视频通话,OpenID进行身份验证,以及OMEMO实现端到端加密等。 在iOS平台上,使用XMPP进行即时通讯的开发通常涉及以下步骤...

Global site tag (gtag.js) - Google Analytics