上一章(阿里云 —— Windows下搭建“阿里云音视频通信RTC“(1))
正文:需求介绍
18年认识的一位同事,最近他有个需求是基于公网实现PC端1对1或多对多视频语音通话 并发量不小于100条,延迟需要小于500ms 毕竟要正常交流。起初我们讨论可以搭建本地的公网服务器或租赁云服务器,利用ffmpeg或webRTC来基于udp通信协议开发这套系统,但再仔细想了一下细节:首先单个服务器并发数量不足以支持,其次基于声音的回音消除、稳定性等无法提供算法保障、最后是需要人为的维护。最终经过繁复沟通我们选择了阿里云视频通信RTC,原因是省心省力,毕竟他团队的开发人员寥寥无几。
Token鉴权,桌面共享
步骤一 :
接着 上一章 继续。向运行的软件输入用户名,点击"创建/加入房间"按钮。出现一个错误码。

查询 错误码表 ,发现是输入参数错误。

在Qt的demo的mainwindow.cpp,查找“joinChannel()”函数。发现需要填写Token相关的鉴权信息。
下图代码的QMessageBox行,提示可自行搭建服务产生Token或手动输入,本章介绍第二种短期使用的办法 由阿里云官网产生Token鉴权信息。 下一章介绍第一种长期使用方式 代码产生Token鉴权信息。

步骤二 :
参考 鉴权信息
在同一个AppID和ChannelID下面,同一个用户ID在其他端登录,先入会的端会被后入会的端踢出频道。

如下图,产生鉴权信息:
其中AppID是使用的应用名称、AppKey是从使用应用页面查询而来,其他参数自行输入。
重要:在相同ChannelID下需要创建多个不同的UserID,这些不同的UserID才能加入同一个聊天组。(说明ChannelID是用来区分不同聊天组的,当然也可以用不同的应用(AppID)来区分 只不过ChannelID更为适合与灵活。)

步骤三 :
参考步骤二。产生两个UserID不同、其他参数均相同的两组鉴权信息。
先将第一组的鉴权信息输入到下面代码中,然后生成执行程序,并将生成的执行程序文件改名为test1;将第二组的鉴权信息输入到下面代码中,然后生成执行程序,并将生成的执行程序文件改名为test2。
// 将网页生成的鉴权信息输入到下面对应的参数中
void MainWindow::joinChannel()
{
AliEngineAuthInfo authinfo;
authinfo.appId = (char*)"aaaaaaaaaaaaa";
authinfo.userId = (char*)"bbbbbbbbbbbbbb";
authinfo.channelId = (char*)"cccccccccccc";
authinfo.nonce = (char*)"ddddddddddddddddd";
authinfo.gslbCount = 1;
authinfo.gslb = new char*[authinfo.gslbCount];
for (int i = 0; i < authinfo.gslbCount; i++)
{
authinfo.gslb[i] = (char*)"eeeeeeeeeeeeeeeeee";
}
// 不使用agentCount
authinfo.agentCount = 0;
authinfo.agent = new char*[authinfo.agentCount];
for (int i = 0; i < authinfo.agentCount; i++)
{
authinfo.agent[i] = (char*)"https://rgslb.rtc.aliyuncs2.com";//////////
}
authinfo.token = (char*)"ffffffffffffffffffffff";
authinfo.timestamp = gggggggggggggggg;
// QMessageBox::warning(this, tr("提示"), tr("1.可自己搭建appserver获取地址,2. 需手动输入鉴权信息!"));
// return ;
QByteArray arrUserName = msUserName.toUtf8();
if (nullptr != mpEngine)
mpEngine->JoinChannel(authinfo, arrUserName.data()); // 返回0为成功。
}
步骤四 :
运行两个demo,用户名任意输入(建议不相同)。


注意的地方 :
1、阿里云网页端生成的鉴权信息,建议每次生成去同网页下的 Token校验器 校验一下。若Token信息出错则PC输入参数的程序可能报错。
在同一个AppID和ChannelID下面,同一个用户ID在其他端登录,先入会的端会被后入会的端踢出频道。
3、只有在相同的AppID、ChannelID下面,以不同的UserID入会,才可以正常聊天。(ChannelID是用来区分不同聊天组的,当然也可以用不同的应用(AppID)来区分 只不过ChannelID更为适合与灵活。)
下一章:阿里云 —— Windows下搭建“阿里云音视频通信RTC“(3)
下一章介绍一种长期使用Token方式,代码产生Token鉴权信息。
关注
笔者 - jxd
本文是阿里云RTC音视频通信在Windows下的搭建教程系列的第二部分,主要介绍了如何进行Token鉴权和桌面共享。通过阿里云官网生成短期Token,确保不同用户ID能在同一ChannelID下进行多端并发的音视频通话,同时提到了Token校验和用户入会规则。
291

被折叠的 条评论
为什么被折叠?



