tgcalls数据回调
<p>[TOC]</p>
<h4>简要描述</h4>
<ul>
<li>tgcalls模块:封装了mediasoup所有连接与数据收发等操作;</li>
<li>本文档详细描述了所有mediasoup接收数据后的回调流程。</li>
</ul>
<h4>请求URL</h4>
<ul>
<li><code>wss://13.70.36.83:4443</code></li>
</ul>
<h4>请求方式</h4>
<ul>
<li>WebSocket </li>
</ul>
<h4>数据结构</h4>
<p>定义文件:
client-secret-app\secret\tdesktop\Telegram\ThirdParty\tgcalls\tgcalls\mediasoup\MediaCommon.h</p>
<h5>通用回调数据:MsNotify</h5>
<p>回调通用数据结构:MsNotify, 该结构使用了std::varanint类型, 里边聚合了多种数据结构,以适合所有不同类型消息中的数据内容,结构定义如下:
<strong>1. PeerInfo 用户操作类型消息所使用的通用数据结构</strong>
// base info
strSrcPeerId // 发起者PeerID, 例谁对谁发起了操作, 如本人操作,则同dstId
strDstPeerId; // 主动发起或者通知消息业务目标用户Id
strDstNick; // 目标用户昵称 e.g."xqk"
// device info
strDeviceName; // 接入设备名称 e.g."libmediasoupclient"
strDeviceVersion; // 接入设备版本 e.g."3.3.0"
<strong>2. ProducerInfo Producer/Consumer所使用的通用消息数据结构</strong>
// base info
strSrcPeerId // 发起者PeerID, 例谁对谁发起了操作, 如本人操作,则同dstId
strDstPeerId; // 主动发起或者通知消息业务目标用户Id
// producer info
// consumer info</p>
<p>以下消息将使用PeerInfo:</p>
<ol>
<li>join</li>
</ol>
<p>以下消息将使用ProducerInfo:</p>
<p>通用通知消息接收入口:
MediasoupInstanceCustomInternal::OnReceiveNotification</p>
<h4>流程说明</h4>
<pre><code>1. 回调统一入口:MediasoupInstanceCustomInternal::sigCallbackTelegram
所以需要回调上层的消息,必须经过这个通用接口进行一轮数据处理操作,
将处理的数据结果发送到消息队列表,并转发给上层。
其中会通过代理类NotifyDispatch负责处理所有消息的数据封装功能。
2. 通过 _sendNotify 对象将封装好的MsNotify数据对象丢给消息队列
通过代理类NotifyDispatch可以将原始用户数据,收发json数据等
封装成通用的数据结构MsNotify,最后将这个对象通过_sendNotify事件丢给上层。
3. 接收统一出口:STMeetMediaSoupServer::receiveMsNotify
此时快到了应用层SecretDesktopPro,通过这个receiveMsNotify统一事件出口,
可以将底层提交的事件对象MsNotify捕获出来,并进行处理。
4. 根据MsNotify.method进行子事件绑定事件信号的fire
应用层会将所有需要处理的信令定义成rpl::event_stream<tgcalls::MsNotify> xxxEvent 事件信号对象。
当某业务逻辑需要用到这个事件信号的时候,可以通过connectEvent进行事件绑定,
当xxxEvent接收到事件以后,使会将所有已绑定的事件通过OBServer的模式进行广播触发。</code></pre>
<h5>备注</h5>
<ul>
<li>更多返回错误代码请看首页的错误代码描述</li>
</ul>