修复在线用户的错误
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
using System.Net.WebSockets;
|
using System.Net.Sockets;
|
||||||
|
using System.Net.WebSockets;
|
||||||
|
using Aop.Api.Domain;
|
||||||
using JNPF.Common.Configuration;
|
using JNPF.Common.Configuration;
|
||||||
using JNPF.Common.Const;
|
using JNPF.Common.Const;
|
||||||
using JNPF.Common.Enums;
|
using JNPF.Common.Enums;
|
||||||
@@ -86,6 +88,23 @@ public class IMHandler : WebSocketHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override async Task OnDisconnected(WebSocket socket)
|
||||||
|
{
|
||||||
|
var connId = WebSocketConnectionManager.GetId(socket);
|
||||||
|
if (!string.IsNullOrWhiteSpace(connId))
|
||||||
|
{
|
||||||
|
var wsClient = WebSocketConnectionManager.GetSocketById(connId);
|
||||||
|
if (wsClient != null)
|
||||||
|
{
|
||||||
|
string tenantId = wsClient.ConnectionConfig.ConfigId;
|
||||||
|
List<UserOnlineModel> list = await GetOnlineUserList(tenantId);
|
||||||
|
list.RemoveAll((x) => x.connectionId == connId);
|
||||||
|
await SetOnlineUserList(tenantId, list);
|
||||||
|
}
|
||||||
|
await WebSocketConnectionManager.RemoveSocket(connId).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 消息通道.
|
/// 消息通道.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -214,6 +233,10 @@ public class IMHandler : WebSocketHandler
|
|||||||
token = message.token
|
token = message.token
|
||||||
});
|
});
|
||||||
await SetOnlineUserList(client.ConnectionConfig.ConfigId, list);
|
await SetOnlineUserList(client.ConnectionConfig.ConfigId, list);
|
||||||
|
|
||||||
|
//var allUsers = WebSocketConnectionManager.GetAllFromTenant(client.ConnectionConfig.ConfigId);
|
||||||
|
//list.RemoveAll(a=>!allUsers.Contains(a.connectionId));
|
||||||
|
//await SetOnlineUserList(client.ConnectionConfig.ConfigId, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -362,17 +362,17 @@ public class OAuthService : IDynamicApiController, ITransient
|
|||||||
var httpContext = _httpContextAccessor.HttpContext;
|
var httpContext = _httpContextAccessor.HttpContext;
|
||||||
httpContext.SignoutToSwagger();
|
httpContext.SignoutToSwagger();
|
||||||
|
|
||||||
// 清除IM中的webSocket
|
// 清除IM中的webSocket, modified by PhilPan 改为在IMHandle中处理
|
||||||
var list = await GetOnlineUserList();
|
//var list = await GetOnlineUserList();
|
||||||
if (list != null)
|
//if (list != null)
|
||||||
{
|
//{
|
||||||
var onlineUser = list.Find(it => it.tenantId == _userManager.TenantId && it.userId == _userManager.UserId);
|
// var onlineUser = list.Find(it => it.tenantId == _userManager.TenantId && it.userId == _userManager.UserId);
|
||||||
if (onlineUser != null)
|
// if (onlineUser != null)
|
||||||
{
|
// {
|
||||||
list.RemoveAll((x) => x.connectionId == onlineUser.connectionId);
|
// list.RemoveAll((x) => x.connectionId == onlineUser.connectionId);
|
||||||
await SetOnlineUserList(list);
|
// await SetOnlineUserList(list);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
await DelUserInfo();
|
await DelUserInfo();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user