修复在线用户的错误

This commit is contained in:
2023-05-19 17:02:08 +08:00
parent 23dd5a7604
commit 1f535464d8
2 changed files with 37 additions and 14 deletions

View File

@@ -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.Const;
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>
@@ -214,6 +233,10 @@ public class IMHandler : WebSocketHandler
token = message.token
});
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;
@@ -432,13 +455,13 @@ public class IMHandler : WebSocketHandler
var getuiUrl = "{0}?clientId={1}&title={2}&content={3}1&text={4}&create=true";
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())
{
var clientId = string.Join(",", clientIdList);
var textDic = new Dictionary<string, string>();
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("headIcon", "/api/File/Image/userAvatar/" + client.HeadIcon);
getuiUrl = string.Format(getuiUrl, _messageOptions.AppPushUrl, clientId, client.UserName + "/" + client.Account, "您有一条新消息", textDic.ToJsonString());