Files
Yi.Framework/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/SignalRHubs/BbsNoticeHub.cs
2024-05-23 23:40:55 +08:00

44 lines
1.4 KiB
C#

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.AspNetCore.SignalR;
using Yi.Framework.Bbs.Domain.Shared.Model;
namespace Yi.Framework.Bbs.Domain.SignalRHubs
{
[HubRoute("/hub/bbs-notice")]
[Authorize]
public class BbsNoticeHub : AbpHub
{
/// <summary>
/// hub连接与用户id的映射关系存储
/// </summary>
public static ConcurrentDictionary<string, HubUserModel> HubUserModels = new ConcurrentDictionary<string, HubUserModel>();
/// <summary>
/// 连接添加用户信息
/// </summary>
/// <returns></returns>
public override Task OnConnectedAsync()
{
var hubUser = new HubUserModel(Context.ConnectionId, CurrentUser.Id!.Value);
HubUserModels.TryAdd(CurrentUser.Id.Value.ToString(), hubUser);
return Task.CompletedTask;
}
/// <summary>
/// 断开连接,去除用户连接信息
/// </summary>
/// <param name="exception"></param>
/// <returns></returns>
public override Task OnDisconnectedAsync(Exception exception)
{
HubUserModels.TryRemove(CurrentUser.Id.Value.ToString(), out _);
return Task.CompletedTask;
}
}
}