diff --git a/AX.WebDrillServer/Hubs/FireDeductionHub.cs b/AX.WebDrillServer/Hubs/FireDeductionHub.cs
index f22f6b4..1ae7a67 100644
--- a/AX.WebDrillServer/Hubs/FireDeductionHub.cs
+++ b/AX.WebDrillServer/Hubs/FireDeductionHub.cs
@@ -103,7 +103,11 @@ namespace AX.WebDrillServer.Hubs
throw new Exception(ex.Message);
}
}
-
+ ///
+ /// 进入房间
+ ///
+ ///
+ ///
public async Task CallServer_EnterRoom(RoomEnterData enterInfo)
{
try
@@ -146,7 +150,11 @@ namespace AX.WebDrillServer.Hubs
}
}
-
+ ///
+ /// 离开房间
+ ///
+ ///
+ ///
public async Task CallServer_LeaveRoom(RoomLeaveData leaveInfo)
{
try
@@ -192,32 +200,44 @@ namespace AX.WebDrillServer.Hubs
//TODO:保存数据
}
-
+ ///
+ /// 上线处理
+ ///
+ ///
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;
}
}
-
+ ///
+ /// 离线处理
+ ///
+ ///
+ ///
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);
}
}
}
diff --git a/AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoomEnums.cs b/AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoomEnums.cs
index ddf5a00..856f5f7 100644
--- a/AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoomEnums.cs
+++ b/AX.WebDrillServer/Services/FireDeductionHub/FireDeductionRoomEnums.cs
@@ -29,6 +29,8 @@
{
Add = 0,//新增
Remove,//移除
+ OnLine,//上线
+ OffLine,//下线
}
public class FireDeductionRoomEnums
{