Browse Source

上下线通知web端

develop
杨栋梁 3 years ago
parent
commit
80cd4b5f9a
  1. 57
      AX.WebDrillServer/Hubs/FireDeductionHub.cs
  2. 2
      AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoomEnums.cs

57
AX.WebDrillServer/Hubs/FireDeductionHub.cs

@ -103,7 +103,11 @@ namespace AX.WebDrillServer.Hubs
throw new Exception(ex.Message);
}
}
/// <summary>
/// 进入房间
/// </summary>
/// <param name="enterInfo"></param>
/// <returns></returns>
public async Task<RoomEnterResult> CallServer_EnterRoom(RoomEnterData enterInfo)
{
try
@ -146,7 +150,11 @@ namespace AX.WebDrillServer.Hubs
}
}
/// <summary>
/// 离开房间
/// </summary>
/// <param name="leaveInfo"></param>
/// <returns></returns>
public async Task<RoomEnterResult> CallServer_LeaveRoom(RoomLeaveData leaveInfo)
{
try
@ -192,32 +200,44 @@ namespace AX.WebDrillServer.Hubs
//TODO:保存数据
}
/// <summary>
/// 上线处理
/// </summary>
/// <returns></returns>
public override async Task OnConnectedAsync()
{
try
{
var userId = Context.UserIdentifier;
var userName = Context.GetNameOfCurrentUser();
FireDeductionUser? user = roomManager.GetUser(userId!);
var user = roomManager.GetUser(userId!);
if (user != null)
{
user.Online = true;
if (user.ConnectionId != Context.ConnectionId)
user.ConnectionId = Context.ConnectionId;
var room = roomManager.GetRoomByUserId(user.UserId);
if (room != null)
var room = roomManager.GetRoom(user.UserId);
if (room != null && !string.IsNullOrEmpty(user.RoomId))
{
//断线重连
RoommateChangeData data = new()
{
ChangeType = RoommateChangeType.OnLine,
FireDeductionUser = user,
};
//通知web端刷新房间用户状态
await Clients.Group(room.RoomId).SendAsync("callWeb_changeRoomate", data);
}
}
else
{
user = new FireDeductionUser();
user.ConnectionId = Context.ConnectionId;
user.UserId = userId!;
user.UserName = userName!;
user = new FireDeductionUser
{
ConnectionId = Context.ConnectionId,
UserId = userId!,
UserName = userName!
};
roomManager.AddUser(user);
}
@ -230,7 +250,11 @@ namespace AX.WebDrillServer.Hubs
throw;
}
}
/// <summary>
/// 离线处理
/// </summary>
/// <param name="exception"></param>
/// <returns></returns>
public override async Task OnDisconnectedAsync(Exception? exception)
{
try
@ -242,13 +266,20 @@ namespace AX.WebDrillServer.Hubs
if (userId != null)
{
var user = roomManager.GetUser(userId!);
if (user != null)
if (user != null && !string.IsNullOrEmpty(user.RoomId))
{
user.Online = false;
var room = roomManager.GetRoomByUserId(user.UserId);
var room = roomManager.GetRoom(user.RoomId);
if (room != null)
{
//断线
RoommateChangeData data = new()
{
ChangeType = RoommateChangeType.OffLine,
FireDeductionUser = user,
};
//通知web端刷新房间用户状态
await Clients.Group(room.RoomId).SendAsync("callWeb_changeRoomate", data);
}
}
}

2
AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoomEnums.cs

@ -29,6 +29,8 @@
{
Add = 0,//新增
Remove,//移除
OnLine,//上线
OffLine,//下线
}
public class FireDeductionRoomEnums
{

Loading…
Cancel
Save