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}");
|
||||
// 通知所有人该用户麦克风状态
|
||||
await _hubContext.Clients.Group(roomNum).OperMicr(userInfo);
|
||||
await _hubContext.Clients.Group(roomNum).OperMicr(userInfo, UId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -316,7 +316,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
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>
|
||||
|
|
@ -359,7 +359,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[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);
|
||||
|
|
@ -370,7 +370,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
// await _hubContext.Clients.GroupExcept(roomNum, connectId).ShowUser();
|
||||
//}
|
||||
|
||||
await _hubContext.Clients.Group(roomNum).ShowUser();
|
||||
await _hubContext.Clients.Group(roomNum).ShowUser(uid, uname, UId, UserName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -403,11 +403,11 @@ namespace WGShare.API.Controllers.Frontend
|
|||
};
|
||||
using (var pipe = RedisHelper.Instance.StartPipe())
|
||||
{
|
||||
// 进房第一人,则设置全员看ta
|
||||
var script = $@"local exists = redis.call('HLEN', KEYS[1])
|
||||
if exists == 0 then redis.call('HSET', KEYS[2], ARGV[1], ARGV[2]) end
|
||||
return exists";
|
||||
pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId);
|
||||
//// 进房第一人,则设置全员看ta
|
||||
//var script = $@"local exists = redis.call('HLEN', KEYS[1])
|
||||
// if exists == 0 then redis.call('HSET', KEYS[2], ARGV[1], ARGV[2]) end
|
||||
// return exists";
|
||||
//pipe.Eval(script, [RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), RedisKeyConstant.SessionManage.GetChannelShowUserKey(TenantId)], roomNum, UId);
|
||||
|
||||
// 记录频道得用户信息
|
||||
pipe.HSet(RedisKeyConstant.SessionManage.GetChannelUserKey(TenantId, roomNum), UId, userInfo);
|
||||
|
|
@ -474,6 +474,43 @@ namespace WGShare.API.Controllers.Frontend
|
|||
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 文件分享
|
||||
/// <summary>
|
||||
/// 分享上传文件
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ namespace WGShare.API.Hubs
|
|||
/// <param name="userName"></param>
|
||||
/// <param name="message"></param>
|
||||
/// <returns></returns>
|
||||
Task ReceiveMessage(string uid, string userName, string message);
|
||||
Task ReceiveMessage(string uid, string userName, string message,long timestamp);
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -56,7 +56,7 @@ namespace WGShare.API.Hubs
|
|||
/// 全员观看
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task ShowUser();
|
||||
Task ShowUser(string uid, string uname,string operUid, string operUserName);
|
||||
|
||||
/// <summary>
|
||||
/// 用户加入频道回调
|
||||
|
|
@ -68,7 +68,7 @@ namespace WGShare.API.Hubs
|
|||
/// 用户退出频道回调
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task UserLeave(string uid);
|
||||
Task UserLeave(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// 所有用户退出频道
|
||||
|
|
@ -82,21 +82,21 @@ namespace WGShare.API.Hubs
|
|||
/// <param name="enableMicr"></param>
|
||||
/// <param name="operUid">操作人UID</param>
|
||||
/// <returns></returns>
|
||||
Task OperAllMicr(bool enableMicr,string operUid);
|
||||
Task OperAllMicr(bool enableMicr, string operUid);
|
||||
|
||||
/// <summary>
|
||||
/// 用户关闭开启麦克风
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
Task OperMicr(ChannelUserInfo user);
|
||||
Task OperMicr(ChannelUserInfo user, string operUid);
|
||||
|
||||
/// <summary>
|
||||
/// 用户开启关闭摄像头
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
Task OperCamera(ChannelUserInfo user);
|
||||
Task OperCamera(ChannelUserInfo user,string operUid);
|
||||
|
||||
/// <summary>
|
||||
/// 管理员用户信息刷新
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
using Masuit.Tools;
|
||||
using Masuit.Tools.DateTimeExt;
|
||||
using Masuit.Tools.Maths;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
using WGShare.API.Helpers;
|
||||
|
|
@ -148,8 +150,7 @@ namespace WGShare.API.Hubs
|
|||
Console.WriteLine($" {DateTime.Now}发送消息 roomNum:" + rooNum);
|
||||
Console.WriteLine($" {DateTime.Now}发送消息 msg:" + msg);
|
||||
|
||||
await Clients.OthersInGroup(rooNum).ReceiveMessage(uid, uname, msg);
|
||||
//await Clients.GroupExcept(rooNum, Context.ConnectionId).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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ namespace WGShare.API
|
|||
app.MapHub<SessionManageHub>("/session-manage").RequireCors(q => q.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
|
||||
|
||||
app.Run();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 程序启动前,删除redis中得数据
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@
|
|||
</member>
|
||||
<member name="M:WGShare.API.Controllers.Frontend.RoomController.GetUser(System.String,System.String)">
|
||||
<summary>
|
||||
查询房间中所有用户信息
|
||||
查询房间中的单个用户信息
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
|
|
@ -175,7 +175,7 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</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>
|
||||
|
|
@ -204,6 +204,18 @@
|
|||
<param name="roomNum"></param>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<summary>
|
||||
分享上传文件
|
||||
|
|
@ -362,7 +374,7 @@
|
|||
客户端消息
|
||||
</summary>
|
||||
</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>
|
||||
|
|
@ -405,7 +417,7 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</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>
|
||||
|
|
@ -437,14 +449,14 @@
|
|||
<param name="operUid">操作人UID</param>
|
||||
<returns></returns>
|
||||
</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>
|
||||
<param name="user"></param>
|
||||
<returns></returns>
|
||||
</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>
|
||||
|
|
|
|||
|
|
@ -52,21 +52,30 @@ namespace WGShare.Domain.Constant
|
|||
/// </summary>
|
||||
public class Data
|
||||
{
|
||||
private static string _prefix = "data:";
|
||||
/// <summary>
|
||||
/// 获取token
|
||||
/// </summary>
|
||||
/// <param name="refreshToken"></param>
|
||||
/// <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>
|
||||
/// 获取Accesstoken Redis Key
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <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