IM/backend/IM_API/Application/EventHandlers/SignalREventHandler.cs
nanxun bedcf97c9d 前端:
增加会话缓存
后端:
增加触发消息创建事件
增加消息创建事件触发后的处理函数
2026-01-20 23:09:46 +08:00

32 lines
976 B
C#

using AutoMapper;
using IM_API.Application.Interfaces;
using IM_API.Domain.Events;
using IM_API.Dtos;
using IM_API.Hubs;
using IM_API.Models;
using IM_API.Tools;
using Microsoft.AspNetCore.SignalR;
namespace IM_API.Application.EventHandlers
{
public class SignalREventHandler : IEventHandler<MessageCreatedEvent>
{
private readonly IHubContext<ChatHub> _hub;
private readonly IMapper _mapper;
public SignalREventHandler(IHubContext<ChatHub> hub, IMapper mapper)
{
_hub = hub;
_mapper = mapper;
}
public async Task Handle(MessageCreatedEvent @event)
{
if(@event.ChatType == Models.ChatType.PRIVATE)
{
MessageBaseDto messageBaseDto = _mapper.Map<MessageBaseDto>(_mapper.Map<Message>(@event));
await _hub.Clients.Users(@event.MsgRecipientId.ToString()).SendAsync("ReceiveMessage", messageBaseDto);
}
}
}
}