修复在线用户的错误
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.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());
|
||||
|
||||
Reference in New Issue
Block a user