写点什么

浅尝不辄止系列之试试腾讯云的 TUIRoom(下)

作者:为自己带盐
  • 2022 年 7 月 08 日
  • 本文字数:2159 字

    阅读完需:约 7 分钟

浅尝不辄止系列之试试腾讯云的 TUIRoom(下)

书接上回《浅尝不辄止系列之试试腾讯云的 TUIRoom(上)》

前提

上篇主要聊了一下集成 TURRoom 的前端部分。

涉及到的代码不是很多,主要是思路,因为我觉得思路和画面感对程序员来说比编码更重要,想清楚自己要做的东西,在脑海里是个什么样子的,结合相关文档资料,只要能基本确定可以实现,就可以放手去干了,这样做绝对会事半功倍!


集成服务端 SDK

其实服务端的部分比较简单,只需要引入腾讯的服务端开发包,然后根据需求,稍加封装就可以了

  • 引入 sdk

package install TecentCloudSDK
复制代码
  • 创建一个业务中心类,我这里为了图省事,就直接封装成了静态方法

public class MyTrtc{  private IResponse resp;  public MyTrtc(IResponse Resp)  {    resp = Resp;  }  //tecentCloud子账号信用凭证  public static readonly Credential cred = new Credential  {    SecretId = "自己的id",    SecretKey = "自己的秘钥"  };    /// <summary>  /// 查询房间内的人数  /// </summary>  /// <param name="CommId"></param>  /// <param name="startTime"></param>  /// <param name="endTime"></param>  /// <returns></returns>  //public static Response DescribeCallDetail(string CommId, ulong startTime,ulong endTime)  public static async Task<Response> DescribeCallDetail(MemberModel model)  {    Response resp = new Response();    try    {      ClientProfile clientProfile = new ClientProfile();      HttpProfile httpProfile = new HttpProfile();      httpProfile.Endpoint = ("trtc.tencentcloudapi.com");      clientProfile.HttpProfile = httpProfile;
TrtcClient client = new TrtcClient(cred, "ap-guangzhou", clientProfile); DescribeCallDetailRequest req = new DescribeCallDetailRequest(); req.CommId = model.CommId; req.StartTime = model.StartTime; req.EndTime = model.EndTime; req.PageNumber = (Convert.ToInt32(model.pageindex) - 1).ToString(); req.PageSize = model.pagesize; req.SdkAppId = Common.ConfigurationHelper.GetSectionValue("trtcId"); DescribeCallDetailResponse dresp = await client.DescribeCallDetail(req); resp.code = 1; resp.data = new { total = dresp.Total, items = dresp.UserList }; } catch(Exception ex) { resp.code = -1; resp.message = $"查询房间人数失败,{ex.Message},{ex.StackTrace}"; } return resp; }}
复制代码

因为封住的部分,主要就是根据实际需求灌装代码了,我就不一一列举了,这里就列一个查询房间人数的逻辑,其余的,还有“查询房间列表”,“解散房间”,“踢人”,“推流”,“终止推流”这几个方法,大家感兴趣的,可以看官方手册,按需接入就可以了。

  • 编写接口。这部分也很简单,在业务中心类里,封装好 sdk 的方法后,就编写自己的项目接口了

/// <summary>/// 查询房间列表/// </summary>/// <param name="model"></param>/// <returns></returns>[HttpPost][ValidateAntiForgeryToken]public async Task<IActionResult> DescribeRoomInformation(RequestModels.Trtc.RoomModel model){return Json(await MyTrtc.DescribeRoomInformation(model));}/// <summary>/// 解散房间/// </summary>/// <param name="roomId"></param>/// <returns></returns>[HttpPost][ValidateAntiForgeryToken]public async Task<IActionResult> DismissRoom(RequestModels.Trtc.RoomModel model){return Json(await MyTrtc.DismissRoom(model.RoomId));}/// <summary>/// 房间内用户列表/// </summary>/// <param name="model"></param>/// <returns></returns>[HttpPost][ValidateAntiForgeryToken]public async Task<IActionResult> DescribeCallDetail(RequestModels.Trtc.MemberModel model){return Json(await MyTrtc.DescribeCallDetail(model));}/// <summary>/// 移除房间内用户/// </summary>/// <param name="model"></param>/// <returns></returns>[HttpPost][ValidateAntiForgeryToken]public async Task<IActionResult> RemoveUser(RequestModels.Trtc.RoomModel model){return Json(await MyTrtc.RemoveUser(model));}
/// <summary>/// 直播推流/// </summary>/// <param name="model"></param>/// <returns></returns>[HttpPost]public async Task<IActionResult> PushLive(RequestModels.Trtc.PushStreamModel model){return Json(await MyTrtc.PushLive(model));}
/// <summary>/// 结束推流/// </summary>/// <param name="roomId"></param>/// <returns></returns>[HttpPost][ValidateAntiForgeryToken]public async Task<IActionResult> EndPushLive(ulong roomId){return Json(await MyTrtc.EndPushLive(roomId));}
复制代码


  • 开发控制管理页面,这部分我就不贴代码了,就是根据业务场景,把管理页面做出来就行,贴几张图吧




服务端的集成基本就是这样。集成好后,就可以进行旁路直播的基本管理了。

好了,基本就是这样了,一篇拆两篇,希望官方大大原谅~~。


发布于: 刚刚阅读数: 3
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
浅尝不辄止系列之试试腾讯云的 TUIRoom(下)_7月月更_为自己带盐_InfoQ写作社区