修复在线用户的错误
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;
|
||||||
@@ -432,13 +455,13 @@ public class IMHandler : WebSocketHandler
|
|||||||
var getuiUrl = "{0}?clientId={1}&title={2}&content={3}1&text={4}&create=true";
|
var getuiUrl = "{0}?clientId={1}&title={2}&content={3}1&text={4}&create=true";
|
||||||
if (toUserIds.Any())
|
if (toUserIds.Any())
|
||||||
{
|
{
|
||||||
var clientIdList = await _sqlSugarClient.Queryable<UserDeviceEntity>().Where(x => toUserIds==x.UserId && x.DeleteMark == null).Select(x => x.ClientId).ToListAsync();
|
var clientIdList = await _sqlSugarClient.Queryable<UserDeviceEntity>().Where(x => toUserIds == x.UserId && x.DeleteMark == null).Select(x => x.ClientId).ToListAsync();
|
||||||
if (clientIdList.Any())
|
if (clientIdList.Any())
|
||||||
{
|
{
|
||||||
var clientId = string.Join(",", clientIdList);
|
var clientId = string.Join(",", clientIdList);
|
||||||
var textDic = new Dictionary<string, string>();
|
var textDic = new Dictionary<string, string>();
|
||||||
textDic.Add("type", "3");
|
textDic.Add("type", "3");
|
||||||
textDic.Add("name", client.UserName+"/"+ client.Account);
|
textDic.Add("name", client.UserName + "/" + client.Account);
|
||||||
textDic.Add("formUserId", client.UserId);
|
textDic.Add("formUserId", client.UserId);
|
||||||
textDic.Add("headIcon", "/api/File/Image/userAvatar/" + client.HeadIcon);
|
textDic.Add("headIcon", "/api/File/Image/userAvatar/" + client.HeadIcon);
|
||||||
getuiUrl = string.Format(getuiUrl, _messageOptions.AppPushUrl, clientId, client.UserName + "/" + client.Account, "您有一条新消息", textDic.ToJsonString());
|
getuiUrl = string.Format(getuiUrl, _messageOptions.AppPushUrl, clientId, client.UserName + "/" + client.Account, "您有一条新消息", textDic.ToJsonString());
|
||||||
|
|||||||
@@ -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