This commit is contained in:
parent
9fcab57b4b
commit
0d51178455
|
|
@ -295,7 +295,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
|
|
||||||
_logger.LogInformation($@"开闭麦克分,推送一次,roomNum:{roomNum},enableMicr:{enableMicr},uid:{uid}");
|
_logger.LogInformation($@"开闭麦克分,推送一次,roomNum:{roomNum},enableMicr:{enableMicr},uid:{uid}");
|
||||||
// 通知所有人该用户麦克风状态
|
// 通知所有人该用户麦克风状态
|
||||||
await _hubContext.Clients.Group(roomNum).OperMicr(userInfo);
|
await _hubContext.Clients.Group(roomNum).OperMicr(userInfo, UId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -316,7 +316,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), uid, userInfo);
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), uid, userInfo);
|
||||||
|
|
||||||
// 通知所有人该用户摄像头状态
|
// 通知所有人该用户摄像头状态
|
||||||
await _hubContext.Clients.Group(roomNum).OperCamera(userInfo);
|
await _hubContext.Clients.Group(roomNum).OperCamera(userInfo, UId);
|
||||||
}
|
}
|
||||||
|
|
||||||
///// <summary>
|
///// <summary>
|
||||||
|
|
@ -359,7 +359,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("show-user")]
|
[HttpPost("show-user")]
|
||||||
public async Task SetShowUser([FromQuery] string roomNum, [FromQuery] string? uid)
|
public async Task SetShowUser([FromQuery] string roomNum, [FromQuery] string uid, [FromQuery] string uname)
|
||||||
{
|
{
|
||||||
// 设置房间全员观看用户
|
// 设置房间全员观看用户
|
||||||
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum, uid);
|
RedisHelper.Instance.HSet(RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId), roomNum, uid);
|
||||||
|
|
@ -370,7 +370,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
// await _hubContext.Clients.GroupExcept(roomNum, connectId).ShowUser();
|
// await _hubContext.Clients.GroupExcept(roomNum, connectId).ShowUser();
|
||||||
//}
|
//}
|
||||||
|
|
||||||
await _hubContext.Clients.Group(roomNum).ShowUser();
|
await _hubContext.Clients.Group(roomNum).ShowUser(uid, uname, UId, UserName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -403,11 +403,11 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
};
|
};
|
||||||
using (var pipe = RedisHelper.Instance.StartPipe())
|
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||||
{
|
{
|
||||||
// 进房第一人,则设置全员看ta
|
//// 进房第一人,则设置全员看ta
|
||||||
var script = $@"local exists = redis.call('HLEN', KEYS[1])
|
//var script = $@"local exists = redis.call('HLEN', KEYS[1])
|
||||||
if exists == 0 then redis.call('HSET', KEYS[2], ARGV[1], ARGV[2]) end
|
// if exists == 0 then redis.call('HSET', KEYS[2], ARGV[1], ARGV[2]) end
|
||||||
return exists";
|
// return exists";
|
||||||
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId);
|
//pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId);
|
||||||
|
|
||||||
// 记录频道得用户信息
|
// 记录频道得用户信息
|
||||||
pipe.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId, userInfo);
|
pipe.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId, userInfo);
|
||||||
|
|
@ -474,6 +474,43 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
await _hubContext.Clients.Group(roomNum).AllLeave();
|
await _hubContext.Clients.Group(roomNum).AllLeave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取监控的轮询用户
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("polling")]
|
||||||
|
public async Task<IEnumerable<ChannelUserInfo>> GetPollingUser([FromQuery] string roomNum, [FromQuery] int count)
|
||||||
|
{
|
||||||
|
// 获取当前房间所有人id
|
||||||
|
var channelUserInfos = RedisHelper.Instance.HVals<ChannelUserInfo>(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum));
|
||||||
|
var polledUserIds = RedisHelper.Instance.SMembers(RedisKeyConstant.Data.GetPolledUserId(TenantId, roomNum));
|
||||||
|
|
||||||
|
// 排除已轮询的用户
|
||||||
|
var userInfos = channelUserInfos.Where(x => !polledUserIds.Contains(x.UID)).Take(count).ToList();
|
||||||
|
if (userInfos.Count < count)
|
||||||
|
{
|
||||||
|
// 数量不足,则从全部用户中取足
|
||||||
|
var takeCount = count - userInfos.Count < 0 ? 0 : count - userInfos.Count;
|
||||||
|
userInfos.AddRange(channelUserInfos.Take(takeCount));
|
||||||
|
// 删除记录,重新记录
|
||||||
|
RedisHelper.Instance.Del(RedisKeyConstant.Data.GetPolledUserId(TenantId, roomNum));
|
||||||
|
}
|
||||||
|
|
||||||
|
RedisHelper.Instance.SAdd(RedisKeyConstant.Data.GetPolledUserId(TenantId, roomNum), userInfos.Select(x => x.UID).ToArray());
|
||||||
|
return userInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 申请发言
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("apply-speak")]
|
||||||
|
public async Task ApplyToSpeak([FromQuery] string roomNum)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region 文件分享
|
#region 文件分享
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 分享上传文件
|
/// 分享上传文件
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ namespace WGShare.API.Hubs
|
||||||
/// <param name="userName"></param>
|
/// <param name="userName"></param>
|
||||||
/// <param name="message"></param>
|
/// <param name="message"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ReceiveMessage(string uid, string userName, string message);
|
Task ReceiveMessage(string uid, string userName, string message,long timestamp);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -56,7 +56,7 @@ namespace WGShare.API.Hubs
|
||||||
/// 全员观看
|
/// 全员观看
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task ShowUser();
|
Task ShowUser(string uid, string uname,string operUid, string operUserName);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户加入频道回调
|
/// 用户加入频道回调
|
||||||
|
|
@ -68,7 +68,7 @@ namespace WGShare.API.Hubs
|
||||||
/// 用户退出频道回调
|
/// 用户退出频道回调
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task UserLeave(string uid);
|
Task UserLeave(string uid);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 所有用户退出频道
|
/// 所有用户退出频道
|
||||||
|
|
@ -82,21 +82,21 @@ namespace WGShare.API.Hubs
|
||||||
/// <param name="enableMicr"></param>
|
/// <param name="enableMicr"></param>
|
||||||
/// <param name="operUid">操作人UID</param>
|
/// <param name="operUid">操作人UID</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task OperAllMicr(bool enableMicr,string operUid);
|
Task OperAllMicr(bool enableMicr, string operUid);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户关闭开启麦克风
|
/// 用户关闭开启麦克风
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user"></param>
|
/// <param name="user"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task OperMicr(ChannelUserInfo user);
|
Task OperMicr(ChannelUserInfo user, string operUid);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户开启关闭摄像头
|
/// 用户开启关闭摄像头
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user"></param>
|
/// <param name="user"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task OperCamera(ChannelUserInfo user);
|
Task OperCamera(ChannelUserInfo user,string operUid);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 管理员用户信息刷新
|
/// 管理员用户信息刷新
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
using Masuit.Tools;
|
using Masuit.Tools;
|
||||||
|
using Masuit.Tools.DateTimeExt;
|
||||||
using Masuit.Tools.Maths;
|
using Masuit.Tools.Maths;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
using System.Security.Claims;
|
using System.Security.Claims;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using WGShare.API.Helpers;
|
using WGShare.API.Helpers;
|
||||||
|
|
@ -148,8 +150,7 @@ namespace WGShare.API.Hubs
|
||||||
Console.WriteLine($" {DateTime.Now}发送消息 roomNum:" + rooNum);
|
Console.WriteLine($" {DateTime.Now}发送消息 roomNum:" + rooNum);
|
||||||
Console.WriteLine($" {DateTime.Now}发送消息 msg:" + msg);
|
Console.WriteLine($" {DateTime.Now}发送消息 msg:" + msg);
|
||||||
|
|
||||||
await Clients.OthersInGroup(rooNum).ReceiveMessage(uid, uname, msg);
|
await Clients.OthersInGroup(rooNum).ReceiveMessage(uid, uname, msg, DateTime.Now.GetTotalMilliseconds()); //await Clients.GroupExcept(rooNum, Context.ConnectionId).ReceiveMessage(uid, uname, msg);
|
||||||
//await Clients.GroupExcept(rooNum, Context.ConnectionId).ReceiveMessage(uid, uname, msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetUser(System.String,System.String)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetUser(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
查询房间中所有用户信息
|
查询房间中的单个用户信息
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
|
@ -175,7 +175,7 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.SetShowUser(System.String,System.String)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.SetShowUser(System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
设置全员观看
|
设置全员观看
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -204,6 +204,18 @@
|
||||||
<param name="roomNum"></param>
|
<param name="roomNum"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetPollingUser(System.String,System.Int32)">
|
||||||
|
<summary>
|
||||||
|
获取监控的轮询用户
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.ApplyToSpeak(System.String)">
|
||||||
|
<summary>
|
||||||
|
申请发言
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.AddFile(WGShare.Domain.DTOs.File.ShareFileInputDTO)">
|
<member name="M:WGShare.API.Controllers.Frontend.RoomController.AddFile(WGShare.Domain.DTOs.File.ShareFileInputDTO)">
|
||||||
<summary>
|
<summary>
|
||||||
分享上传文件
|
分享上传文件
|
||||||
|
|
@ -362,7 +374,7 @@
|
||||||
客户端消息
|
客户端消息
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.ReceiveMessage(System.String,System.String,System.String)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.ReceiveMessage(System.String,System.String,System.String,System.Int64)">
|
||||||
<summary>
|
<summary>
|
||||||
接受频道消息
|
接受频道消息
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -405,7 +417,7 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.ShowUser">
|
<member name="M:WGShare.API.Hubs.IMessageClient.ShowUser(System.String,System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
全员观看
|
全员观看
|
||||||
</summary>
|
</summary>
|
||||||
|
|
@ -437,14 +449,14 @@
|
||||||
<param name="operUid">操作人UID</param>
|
<param name="operUid">操作人UID</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.OperMicr(WGShare.Domain.Entities.ChannelUserInfo)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.OperMicr(WGShare.Domain.Entities.ChannelUserInfo,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
用户关闭开启麦克风
|
用户关闭开启麦克风
|
||||||
</summary>
|
</summary>
|
||||||
<param name="user"></param>
|
<param name="user"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WGShare.API.Hubs.IMessageClient.OperCamera(WGShare.Domain.Entities.ChannelUserInfo)">
|
<member name="M:WGShare.API.Hubs.IMessageClient.OperCamera(WGShare.Domain.Entities.ChannelUserInfo,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
用户开启关闭摄像头
|
用户开启关闭摄像头
|
||||||
</summary>
|
</summary>
|
||||||
|
|
|
||||||
|
|
@ -52,21 +52,30 @@ namespace WGShare.Domain.Constant
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Data
|
public class Data
|
||||||
{
|
{
|
||||||
|
private static string _prefix = "data:";
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取token
|
/// 获取token
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="refreshToken"></param>
|
/// <param name="refreshToken"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string GetRefreshTokenKey(string refreshToken) => $@"data:refresh_tk:{refreshToken}";
|
public static string GetRefreshTokenKey(string refreshToken) => $@"{_prefix}refresh_tk:{refreshToken}";
|
||||||
|
|
||||||
public static string GetScreenShareIdKey => $@"data:screen_share_id";
|
public static string GetScreenShareIdKey => $@"{_prefix}screen_share_id";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取Accesstoken Redis Key
|
/// 获取Accesstoken Redis Key
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="uid"></param>
|
/// <param name="uid"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string GetAccessTokenKey(string uid) => $@"data:access_tk:{uid}";
|
public static string GetAccessTokenKey(string uid) => $@"{_prefix}access_tk:{uid}";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取已轮询过的用户
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tenantId"></param>
|
||||||
|
/// <param name="roomNum"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string GetPolledUserId(string tenantId, string roomNum) => $@"{_prefix}polled_uid:te_{tenantId}ch_{roomNum}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue