已经了解了用XMPP进行文字消息交互,若交互内容为音频或者视频该如何处理-Jingle
Jingle?
Jingle是提供互联网语音通话方面的一个可靠的机制(见[XEP-0167]的细节),Jingle使用同样的方法可协商和管理任何类型的媒体会话,包括视频聊天,文件转移和屏幕共享,此外,由于XMPP适合传输优化许多XML小片段数据,而不是大量数据媒体流,所以通常用Jingle来设置XMPP本身不适于进行的会话
工作方式
Jingle使用XMPP协议作为信令信道建立,管理和终止媒体会话,而媒体数据本身进行点对点传送或者通过一个专门的中介媒体中继传送
Jingle通道
1 信令通道:发送信息的和整体会话管理
2 媒体通道:发送媒体数据本身,媒体通道本身可能使用点对点连接(直接连接两个客户机)或中介(数据通过一个中继服务器发送)
Jingle模型
在Jingle的谈判中,一方(启动者)启动会话,另一方(应答者)同意继续或者拒绝提供邀请
应用类型:陈述在会话中需要交换什么,例如,通过实时传输协议(RTP)进行语音聊天
运输方式:描述数据如何发送,例如,使用用户数据报协议(UDP)
Jingle会话流程
1 启动者发送一个要约给响应者
2 要约包含一个或多个应用程序类型(语音,视频,文件传输,屏幕共享等)和一个或多个传输方式(UDP,ICE,TCP 等)
3 有关各方商议应用程序类型相关的参数并建立运输通道
4 响应者接受或拒绝这一要约
5 如果要约被接受,双方通过商议的运输方式交换有关的应用程序类型的数据(XMPP协议的信号流量下降)
6 如果需要,双方可以在会话期间修改某些参数(例如,加入视频到语音聊天,或切换到一个更好的运输方式)
7 最后,会话结束,各方继续自己的工作
详细可见以下流程图
实例分析
user@ejabberd.org/Psi向gmz@ejabberd.org/Psi发起建立Jingle会话请求
<iq from="user@ejabberd.org/Psi"
id="jah28fh1"
to="gmz@ejabberd.org/Psi"
type="set">
<jingle xmlns