public MessagingController(
            IGlobalSessionsRegistry sessionsRegistry,
            IGroupChatsRepository groupChatsRepository,
            IDevicesRepository devicesRepository,
            ProcessedMessagesQueue processedMessagesQueue,
            ISessionsServer server,
            IUndeliveredEventsRepository<Message> undeliveredMessagesRepository,
            IUndeliveredEventsRepository<DeliveryNotification> undeliveredDeliveryNotificationsRepository,
            IUndeliveredEventsRepository<SeenNotification> undeliveredSeenNotificationsRepository,
            IInternalMessageBus internalMessageBus)
        {
            _groupChatsRepository = groupChatsRepository;
            _devicesRepository = devicesRepository;
            _processedMessagesQueue = processedMessagesQueue;

            _messageEventManager = new ReliableEventManager<Message, IncomingMessage>(server,
                undeliveredMessagesRepository, sessionsRegistry,internalMessageBus,MessageDtoConverter, OnMessageProcessed);
            RegisterPulsable(_messageEventManager);

            _deliveryStatusEventManager = new ReliableEventManager<DeliveryNotification, ServerClient.Entities.Ws.Events.DeliveryNotification>(server,
                undeliveredDeliveryNotificationsRepository, sessionsRegistry, internalMessageBus,
                n => new ServerClient.Entities.Ws.Events.DeliveryNotification { MessageToken = n.MessageToken, EventId = n.EventId, DeliveredAt = n.CreatedAt });
            RegisterPulsable(_deliveryStatusEventManager);

            _seenStatusEventManager = new ReliableEventManager<SeenNotification, ServerClient.Entities.Ws.Events.SeenNotification>(server, 
                 undeliveredSeenNotificationsRepository, sessionsRegistry, internalMessageBus,
                n => new ServerClient.Entities.Ws.Events.SeenNotification { MessageToken = n.MessageToken, EventId = n.EventId, SeenAt = n.CreatedAt });
            RegisterPulsable(_seenStatusEventManager);

            _isTypingEventManager = new InstantEventManager<IsTypingEvent, IsTypingNotification>(server,
                sessionsRegistry, internalMessageBus, n => new IsTypingNotification { IsTyping = n.IsTyping, SenderUserId = n.SenderUserId, GroupId = n.GroupId });
            RegisterPulsable(_isTypingEventManager);
        }
示例#2
0
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);

            app.UseFileServer(new FileServerOptions()
            {
                RequestPath = new PathString("/Images")
            });

            var messages = new ProcessedMessagesQueue(ConnectionString, OnMessageArrived);
        }