/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit.SignalR/Consumers/ConnectionConsumer.cs
45 строк
1 KB
denys.kozhevnikov
Cleanup using
25 янв 2023, 22:00
25 янв 2023, 22:00
15c3b8b
Код
Авторство
О чём код?
namespace MassTransit.SignalR.Consumers { using System; using System.Collections.Generic; using System.Threading.Tasks; using Contracts; using Microsoft.AspNetCore.SignalR; using Utils; public class ConnectionConsumer<THub> : IConsumer<Connection<THub>> where THub : Hub { readonly MassTransitHubLifetimeManager<THub> _hubLifetimeManager; public ConnectionConsumer(MassTransitHubLifetimeManager<THub> hubLifetimeManager) { _hubLifetimeManager = hubLifetimeManager; } public Task Consume(ConsumeContext<Connection<THub>> context) { return Handle(context.Message.ConnectionId, context.Message.Messages); } async Task Handle(string connectionId, IReadOnlyDictionary<string, byte[]> messages) { var message = new Lazy<SerializedHubMessage>(messages.ToSerializedHubMessage); var connection = _hubLifetimeManager.Connections[connectionId]; if (connection == null) return; // Connection doesn't exist on server, skipping try { await connection.WriteAsync(message.Value).AsTask(); } catch (Exception e) { LogContext.Warning?.Log(e, "Failed to write message"); } } } }