Gtalk Jingle (2) - IM的带内和带外

上回说到libjingle的代码里, relayserver的写法,导致一个client只能和一个peer通信,那Gtalk如果直接用这个代码没有改动,当需要relay server的时候,是怎么和多个人聊天的?

 

其实这个libjingle只负责语音聊天,文件传输这些比较附加的功能,Gtalk功能还挺简洁(简单)的,并没有支持多人语音聊天之类的。用XMPP术语来说,就是带外数据(out of band data). 这些一般数据量比较大,不方便嵌入在信令里和影响信令,所以一般另外建立专用的连接。

 

而咱们基本的文字聊天,由于文字很短,是直接嵌入在IM客户端和IM服务器的信令通道里的。就是IM客户端发给IM服务器,IM服务器再发给对端IM客户端。而不需要另外建专门的文字聊天连接(那样还要搞什么NAT穿越,大洞什么的)。用XMPP词汇来说是带内(in band)数据.

 

RFC 3920 XMPP-core给了一个简化的客户端和服务器的会话示例:

(朱丽叶/Juliet发一句话给server,注明是要给罗密欧/Romeo的;server发给朱丽叶一句话,是罗密欧回给朱丽叶的。)

   A basic "session":

   C: <?xml version='1.0'?>
      <stream:stream
          to='example.com'
          xmlns='jabber:client'
          xmlns:stream='http://etherx.jabber.org/streams'
          version='1.0'>
   S: <?xml version='1.0'?>
      <stream:stream
          from='example.com'
          id='someid'
          xmlns='jabber:client'
          xmlns:stream='http://etherx.jabber.org/streams'
          version='1.0'>
   ...  encryption, authentication, and resource binding ...
   C:   <message from='juliet@example.com'
                 to='romeo@example.net'
                 xml:lang='en'>
   C:     <body>Art thou not Romeo, and a Montague?</body>
   C:   </message>
   S:   <message from='romeo@example.net'
                 to='juliet@example.com'
                 xml:lang='en'>
   S:     <body>Neither, fair saint, if either thee dislike.</body>
   S:   </message>
   C: </stream:stream>
   S: </stream:stream>

 

 

XMPP核心协议规定带内信令,带内数据(消息)什么的,而带外数据的通信则是由一些XMPP的扩展协议(比如说Jingle)来做的。

 

(在电信领域里,有带内信令和带外信令的说法,和语音在同一信道传输的信令叫带内信令,而不和语音在同一信道中传输的信令,叫带外信令;是相对于语音/数据通道来说带内带外。而在IM里则是相对于信令通道来说带内带外)。

 

其实IM里这种带内传聊天文字的方法和移动通信中手机短信的传输一样,手机短信的短信文字也是嵌入在信令协议(MAP)中(对短每个短信字数有限制),在信令(控制)平面完成传输。

 

- 千里

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值