1.
SessionManager管理多个Session:
class SessionManager {
typedef std::map<std::string, Session*> SessionMap;
SessionMap session_map_;
}
每个Session在SessionManager里通过sid来区分:
session_map_[session->id()] = session;
通过SessionManager::CreateSession(content_type)创建一个Session, 每个Session对应一个content_type:
class Session {
std::string content_type_;
}
content_type目前传入的为"urn:xmpp:jingle:apps:rtp:1", 其实就是<content>下<description>元素的"xmlns"属性值.
2.
一个Session管理多个Transport:
typedef std::map<std::string, TransportProxy*> TransportMap;
class Session {
TransportMap transports_;
}
每个Transport在Session里通过content_name来区分:
transports_[content_name] = transproxy;
通过Session::GetOrCreateTransportProxy(content_name)来创建一个Transport. content_name就是<content>元素的name属性值, 如"audio", "video"等. 比如, 在视频聊天中:
<jingle>
<content name="audio" creator="initiator">
</content>
<content name="video" creator="initiator">
</content>
</jingle>
3.
一个Transport管理多个Transportchannel:
typedef std::map<std::string, TransportChannelImpl*> ChannelMap;
class Transport {
ChannelMap channels_;
}
每个Transportchannel通过channel_name来区分:
channels_[name] = channel;
通过 Transport::CreateChannel(name)创建一个Transport, channel_name没有对应的XMPP stanza, 其值有"rtp", "rtcp"等.
4.
一个TransportChannel(主要是P2PTransportChannel)管理多个Port:
class P2PTransportChannel {
std::vector<Port *> ports_;
}
Port分为StunPort, TCPPort, UDPPort等, 与<transport>元素的xmlns属性值(如"urn:xmpp:jingle:transports:ice-udp:1")以及子元素<candidate>的protocol属性值(如"udp")有关.
5.
一个Port管理多个Connection:
class Port {
typedef std::map<talk_base::SocketAddress, Connection*> AddressMap;
AddressMap connections_;
}
6.
一个Connection包括一个local_candidate和一个remote_candidate:
class Connection
class Connection {
size_t local_candidate_index_;
Candidate remote_candidate_;
}
分享到:
相关推荐
libjingle源码(含GIPS LITE),方便大家编译上传
组件包包括了Jingle和Jingle-Audio的google实现的源代码,它们是XMPP标准的推荐扩展,目前试验版可用。 我们发布此代码是为了让消费者们在实时通讯工具的选择和操作性更多些。Google的源码发布基于Berkeley协议,也...
组件包包括了Jingle和Jingle-Audio的google实现的源代码,它们是XMPP标准的推荐扩展,目前试验版可用。 我们发布此代码是为了让消费者们在实时通讯工具的选择和操作性更多些。Google的源码发布基于Berkeley协议,也...
p2p 技术实现,从中可以学到很多 p2p技术的经验
libjingle中的重要概念 关于libjingle你应当理解下面的重要概念: Signals Threads and Messages Naming Conventions SSL Support Connections Transports, Channels, and Connections Candidates Data ...
从官网上复制的libjingle开发者指南和源码索引,你也可以访问一下网站: https://developers.google.com/talk/libjingle/developer_guide
源:https://developers.google.com/talk/libjingle/reference/ 语言:English 源于谷歌的libjingle的API。 个人整理成表格,方便开发时查找。 希望能帮助相关开发者。
VS2010编译libjingle0.6.2步骤 图文并茂
工程基于vs2008,代码基于德国人的MyJingle-src-0.2.0,myjingle是对libjingle的实现,基于XMPP协议。可以进行点对点的语音聊天以及文字聊天。可以用gtalk的账号,也可以自己用openfire作为服务器配置账号。
带GIPS的libjingle source
android Webrtc ( libjingle_peerconnection_builds 包括例子
libjingle的封装库,可以快速开发基于XMPP的客户端通信,方便试用
libjingle vs2010 编译通过
libjingle-0.5.1.zip,WebRTC nat打洞专用。
libjingle_peerconnection.jar libjingle_peerconnection.so 2016.8.11 号编译
libjingle0.6.14 版本,p2p学习
libjingle0.6.14编译好的.lib
libjingle 中文 手册,很不错的哦,描述的很清楚,还有使用范例