| 1234567891011121314151617181920212223 |
- using Application.Abstractions.Hub;
- using Microsoft.AspNetCore.SignalR;
- namespace Infrastructure.Hubs;
- /// <summary>
- /// 크루원 변경 broadcast 구현체.
- /// FeedBroadcaster 와 동일하게 IHubContext 미주입(테스트/디자인 타임) 시 silent no-op.
- /// </summary>
- internal sealed class CrewHubBroadcaster(IHubContext<AppHub, IAppHubClient>? hub = null) : ICrewHubBroadcaster
- {
- public Task BroadcastMemberChangeAsync(int crewID, string kind, object data, CancellationToken ct = default)
- {
- if (hub is null || crewID <= 0 || string.IsNullOrWhiteSpace(kind))
- {
- return Task.CompletedTask;
- }
- return hub.Clients
- .Group($"crew:{crewID}")
- .ReceiveCrewMemberChange(new { kind, data });
- }
- }
|