Libjingle应用之三——设置会话管理

    登陆到服务器,发送和接收状态信息后,接下来就该进行会话管理了。会话管理,简而言之就是处理入向的连接请求和发送出向的连接请求。会话管理也是 libjingle 应用最具有用户特性的部分,因为有的会话是进行文件传送,有的会话是进行语音通话,而有的会话是进行视频聊天。如此种种,皆依赖于客户端不同的应用场合。
对于会话管理,下面的步骤都是必须的:
1) 实例化 NetworkManager, PortAllocator 子类和 SessionManager 对象,这些需要在初始和接收会话请求之前完成。
2) 创建一个新的线程对象,作为工作线程使用。创建 talk_base::Thread 对象,同时将对象作为参数传入 SessionManager 构造函数。
3) SessionManager 注册 SessionClient 子类, SessionManager 保存 SessionClient 的实例号 ID ,这个 ID 在发送和接收的代码中都是作为唯一的标识。
4) 设置 SessionManager 发送和接收 XMPP 消息, SessionManagerTask 作为 XMPP 消息组件和 p2p 组件的连接器, XMPP 消息包括会话请求,应答和候选者列表。
5) 复位 STUN 和接续端口信息。 Libjingle 默认使用 google STUN 和接续服务器。当然客户端也可以通过修改 HttpPortAllocator 中参数值使得客户端访问自己的服务器,从 JingleInfoTask 对象中可以得到这些信息。
发起和接收连接按照如下流程处理:
1) 发送连接请求。发送连接请求意味着创建一个新的会话对象,设置会话信息并发送,在 Session::SignalState 中等待对应的应答。
2)接收到连接请求。当收到新的会话请求时,一个 Session 对象会被自动创建, SessionClient::OnSessionCreate 也会被调用,有标识表明消息是入向还是出向请求。对于入向请求,需要通知用户,由用户决定接收 Session::Accept 或者拒绝请求 Session:Reject
       3)发送和接收数据。数据通过 TransportChannel 对象发送和接收。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值