TRTC SDK 提供了发送自定义消息的功能,通过该功能,角色为主播的用户都可以向同一个视频房间里的其他用户广播自己的定制消息。
iOS | Android | Mac OS | Windows | Electron | 微信小程序 | Chrome 浏览器 |
---|---|---|---|---|---|---|
? | ? | ? | ? | ? | × | × |
某一个用户的自定义消息会被夹在音视频数据流中,随着音视频数据一起传输给房间里的其他用户。由于音视频线路本身并不是100%可靠的,为了提高可靠性,TRTC SDK 内部本身实现了一些可靠性保护机制。
通过调用 TRTCCloud 的 sendCustomCmdMsg
接口发送的,发送时需要指定四个参数:
参数名 | 参数说明 |
---|---|
cmdID | 消息ID,取值范围为 1 ~ 10,不同业务类型的消息应当使用不同的 cmdID。 |
data | 待发送的消息,最大支持 1KB(1000字节)的数据大小。 |
reliable | 是否可靠发送,可靠发送的代价是会引入一定的延时,因为接收端要暂存一段时间的数据来等待重传。 |
ordered | 是否要求有序,即是否要求接收端接收的数据顺序和发送端发送的顺序一致,这会带来一定的接收延时,因为在接收端需要暂存并排序这些消息。 |
注意:请将 reliable 和 ordered 同时设置为 YES 或 NO, 暂不支持交叉设置。
//发送自定义消息的示例代码
- (void)sendHello {
// 自定义消息命令字, 这里需要根据业务定制一套规则,这里以0x1代表发送文字广播消息为例
NSInteger cmdID = 0x1;
NSData *data = [@"Hello" dataUsingEncoding:NSUTF8StringEncoding];
// reliable 和 ordered 目前需要一致,这里以需要保证消息按发送顺序到达为例
[trtcCloud sendCustomCmdMsg:cmdID data:data reliable:YES ordered:YES];
}
当房间中的一个用户通过 sendCustomCmdMsg
发出自定义消息后,房间中其他的用户可以通过 SDK 回调中的 onRecvCustomCmdMsg
接口来接收这些消息。
//接收和处理房间内其他人发送的消息
- (void)onRecvCustomCmdMsgUserId:(NSString *)userId cmdID:(NSInteger)cmdId seq:(UInt32)seq message:(NSData *)message
{
// 接收到 userId 发送的消息
switch (cmdId) // 发送方和接收方协商好的cmdId
{
case 0:
// 处理cmdId = 0消息
break;
case 1:
// 处理cmdId = 1消息
break;
case 2:
// 处理cmdId = 2消息
break;
default:
break;
}
}
由于自定义消息享受比音视频数据更高的传输优先级,如果自定义数据发送过多,音视频数据可能会被干扰到,从而导致画面卡顿或者模糊。所以,我们针对自定义消息的发送进行了如下的频率限制:
对于那些计划将应用程序迁移到云端的企业来说,现在有更多的见解来帮助其制定计...
Alibaba Cloud Linux 2在内核版本kernel-4.19.91-21.al7开始支持TCP层的服务监控...
虚拟主机 数据库与空间关系?虚拟主机的数据库和空间,都是用来存储网站数据、文...
知道了 域名 怎么查备案号?可以直接登录工信部的备案管理系统(https://beian.m...
一说到免备案虚拟主机,很多人都会想到美国等海外主机。其实,除了海外国家的主...
前提条件 成功登录分布式数据库中间件服务控制台。 实例状态为 “运行中” 。 实...
若您建立SSH隧道失败,请重点排查以下命令的参数是否正确。 ssh -L 本地空闲端口...
【51CTO.com原创稿件】如今,数字化成为新常态,推动着传统经济向数字经济的快速...
【51CTO.com原创稿件】2020年是不平凡的一年,众多企业都面临危机,玩具行业也同...
操作场景 云端在VPC中购买了VPN网关和连接,云下客户使用主机安装IPsec软件与云...