libjingle源码分析之:Session和Transport

  • 摘要

        本文介绍了Session和Transport模块。

  • 概述

        Session、SessionClient、Transport和TransportChannel的关系如下图所示:


  • 模块解析
    • SessionClient
      • SessionManager中,按content_type来区分不同的SessionClient,且两端的content_type必须一样。
      • 需要用户实现自己的SessionClient和content_type,并且在初始化的时候添加到SessionManager中,方便创建Session。
      • 接收端,可以等待请求端的消息,实现接收端的Session生命周期管理。
    • Session
      • sid由SessionManager创建,两端对应的sid是一样的。
      • 请求端,创建Session时,多个Session可以绑定同一个SessionClient。
      • 接收端,安照sid和from(请求端的full jid)来查找对应的Session。若Session不存在,先查看对应content_type的SessionClient是否存在,然后创建过程同请求端。
    • Transport
      • 在Session中,用TransportProxy包装,以content_name区分。
      • 默认的实现是P2PTransport,没必要直接使用它。
    • TransportChannel
      • 包含在Transport中,用channel_name区分。
      • 通过Session创建,需要指定content_name和channel_name(即在content_name的Transport下创建channel_name的TransportChannel)。
      • 继承于TransportChannel是TransportChannelImpl,TransportChannel的一个默认具体实现是P2PTransport。
    • SessionManager
      • 未在图中表示。它只是一个辅助类,用来创建Session,将Session和SessionClient绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值