Пример #1
0
        public static async Task <IMqttClient> StartClient(BaseMessageHandler handler)
        {
            var client = new MqttFactory().CreateMqttClient();

            client.UseApplicationMessageReceivedHandler(e =>
            {
                var Payload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                if (Payload.IndexOf('|') != -1)
                {
                    var Channel = e.ApplicationMessage.Topic;
                    var Type    = Payload.Split("|")[0];
                    var Context = Payload.Substring(Type.Length + 1);

                    GeneratedMessage.Dispatch(handler, Channel, Type, Context);
                }
            });

            var clientOptions = new MqttClientOptionsBuilder()
                                .WithClientId("ClientID")
                                .WithTcpServer("127.0.0.1")
                                .WithCleanSession()
                                .Build();

            await client.ConnectAsync(clientOptions);

            foreach (var channel in GeneratedMessage.channels)
            {
                await client.SubscribeAsync(new TopicFilterBuilder().WithTopic(channel).Build());
            }

            return(client);
        }
        public void ShouldSerializeArrays()
        {
            var serializer = BaseMessageHandler.CreateSerializer();

            var arr = new[]
            {
                new MonsterPartModel
                {
                    Health = 32.42f,
                    Index  = 0
                },
                new MonsterPartModel
                {
                    Health = 23.42f,
                    Index  = 1
                }
            };

            var serialized = SerializeToString(serializer, arr);

            this.testOutput.WriteLine(serialized);
            var deserialized = DeserializeFromString <MonsterPartModel[]>(serializer, serialized);

            Assert.Equal(arr, deserialized);
        }
Пример #3
0
 protected virtual void ClearMessageHandler()
 {
     if (_messageHandler != null)
     {
         _messageHandler.OnReceiveMessage -= MessageHandler_OnReceiveMessage;
         _messageHandler = null;
     }
 }
Пример #4
0
        public static void Handle(BaseMessageHandler handler, string channel, string text)
        {
            if (text.IndexOf('|') != -1)
            {
                var type    = text.Split("|")[0];
                var context = text.Substring(type.Length + 1);

                GeneratedMessage.Dispatch(handler, channel, type, context);
            }
        }
 public virtual void Inject(
     SignalBus signalBus,
     BaseMessageHandler messageHandler,
     ISelectedListener <WriterSceneInfoSelectedEventArgs> sceneInfoSelectedListener,
     [Inject(Id = SaveType.Autosave)] IEncounterWriter encounterWriter)
 {
     SignalBus                 = signalBus;
     MessageHandler            = messageHandler;
     SceneInfoSelectedListener = sceneInfoSelectedListener;
     EncounterWriter           = encounterWriter;
 }
Пример #6
0
 public MenuEncounterEditStarter(
     BaseMessageHandler messageHandler,
     IEncounterLocker encounterLocker,
     IWriterSceneStarter sceneStarter,
     IEncounterReader encounterReader,
     BaseMenuEncounterMetadataSelector metadataSelector)
 {
     MessageHandler   = messageHandler;
     EncounterLocker  = encounterLocker;
     SceneStarter     = sceneStarter;
     EncounterReader  = encounterReader;
     MetadataSelector = metadataSelector;
 }
        public void Should_be_able_to_send_to_both_using_base_type()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <BaseMessage>(new NewMessage());

            baseMessageHandler.WasHandled.ShouldBeTrue();
            newMessageHandler.WasHandled.ShouldBeTrue();
        }
Пример #8
0
        public void Should_be_able_to_send_using_object_type()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <object>(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
        }
Пример #9
0
        public void Should_match_same_type_only()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
        }
Пример #10
0
        public void Message_inheritance_default_should_not_be_able_to_send_class_using_inheritance()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <object>(new NewMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeFalse();
            newMessageHandler.NewMessageWasHandled.ShouldBeTrue();
        }
Пример #11
0
        public void Message_inheritance_enabled_should_be_able_to_send_class_using_inheritance()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var eventAggregator    = new EventAggregator(new EventAggregator.Config {
                SupportMessageInheritance = true
            });

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);

            eventAggregator.SendMessage <object>(new NewMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeTrue();
        }
        public void AilmentsShouldSerialize()
        {
            var serializer = BaseMessageHandler.CreateSerializer();

            var initialValue = new AilmentModel
            {
                Buildup = 41.23f,
                Index   = 42
            };
            var serialized = SerializeToString(serializer, initialValue);

            this.testOutput.WriteLine(serialized);
            var deserialized = DeserializeFromString <AilmentModel>(serializer, serialized);

            Assert.Equal(initialValue, deserialized);
        }
        public void PartShouldSerialize()
        {
            var serializer = BaseMessageHandler.CreateSerializer();

            var initialValue = new MonsterPartModel
            {
                Health = 32.42f,
                Index  = 42
            };
            var serialized = SerializeToString(serializer, initialValue);

            this.testOutput.WriteLine(serialized);
            var deserialized = DeserializeFromString <MonsterPartModel>(serializer, serialized);

            Assert.Equal(initialValue, deserialized);
        }
Пример #14
0
        public void Message_inheritance_default_should_not_be_able_to_listen_using_interface()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var messageHandler     = new InterfaceHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);
            eventAggregator.AddListener(messageHandler);

            eventAggregator.SendMessage(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
            messageHandler.MessageWasHandled.ShouldBeFalse();
        }
Пример #15
0
        public void Should_be_able_to_send_subclass_using_interface()
        {
            var newMessageHandler  = new NewMessageHandler();
            var baseMessageHandler = new BaseMessageHandler();
            var messageHandler     = new InterfaceHandler();
            var eventAggregator    = new EventAggregator();

            eventAggregator.AddListener(newMessageHandler);
            eventAggregator.AddListener(baseMessageHandler);
            eventAggregator.AddListener(messageHandler);

            eventAggregator.SendMessage <IMessage>(new BaseMessage());

            baseMessageHandler.BaseMessageWasHandled.ShouldBeTrue();
            newMessageHandler.NewMessageWasHandled.ShouldBeFalse();
            messageHandler.MessageWasHandled.ShouldBeTrue();
        }
Пример #16
0
        public Task Handler <TMessage>(ConsumeContext <TMessage> context) where TMessage : class
        {
            var messageHandlerType = _messageHandlersDictionary[typeof(TMessage)].MessageHandlerType;
            var constructorInfo    = messageHandlerType.GetConstructors()[0];

            BaseMessageHandler <TMessage> messageHandler = null;

            if (DependencyResolver.Current != null)
            {
                messageHandler = DependencyResolver.Current.ResolveHandler <TMessage>(messageHandlerType);
            }
            else
            {
                messageHandler = (BaseMessageHandler <TMessage>)constructorInfo.Invoke(new object[] {});
            }

            Console.WriteLine($"Task created for handle message {typeof(TMessage)}.");
            return(messageHandler.MessageHandle(context.Message, context));
        }
Пример #17
0
        public void StartClient()
        {
            Skin skin = new Skin
            {
                Slim     = false,
                Texture  = Encoding.Default.GetBytes(new string('Z', 8192)),
                SkinType = "Standard_Custom"
            };

            var nodeServer = new NodeServer(_endPoint);

            PlayerInfo playerInfo = new PlayerInfo
            {
                Username      = _username,
                ClientUuid    = new UUID(Guid.NewGuid().ToString()),
                ClientId      = ClientId,
                ServerAddress = "localhost",
                Skin          = skin
            };

            _fromNodeHander = new MockNetworkHandler(this);
            _toNodeHandler  = (BaseMessageHandler)nodeServer.CreatePlayer(_fromNodeHander, playerInfo);

            if (_toNodeHandler == null)
            {
                IsRunning = false;
                return;
            }

            _toNodeHandler.HandleMcpeClientToServerHandshake(null);

            McpeRequestChunkRadius radius = McpeRequestChunkRadius.CreateObject();

            radius.chunkRadius = ChunkRadius;

            _toNodeHandler.WriteBytes(radius.Encode());
            radius.PutPool();

            IsRunning = true;
        }
Пример #18
0
 public static void Dispatch(BaseMessageHandler handler, string Channel, string Type, string Context)
 {
     if (Channel == "chat" && Type == "PublicChatMessage")
     {
         var msg = JsonConvert.DeserializeObject <PublicChatMessage>(Context);
         handler.OnPublicChatEvent(msg);
     }
     else if (Channel == "chat" && Type == "WhisperMessage")
     {
         var msg = JsonConvert.DeserializeObject <WhisperMessage>(Context);
         handler.OnWhisperEvent(msg);
     }
     else if (Channel == "notice" && Type == "NoticeMessage")
     {
         var msg = JsonConvert.DeserializeObject <NoticeMessage>(Context);
         handler.OnNoticeEvent(msg);
     }
     else
     {
         throw new ArgumentOutOfRangeException();
     }
 }
Пример #19
0
        public virtual MessageCollectionData Process(MessageCollectionData messageCollection)
        {
            if (messageCollection == null)
            {
                return(null);
            }

            //heartbeat
            User u = UserModule.Instance.GetUserByName(messageCollection.UserFrom);

            if (u != null)
            {
                u.HeartBeat();
            }

            if (messageCollection.MessageList == null || messageCollection.MessageList.Count == 0)
            {
                return(BaseMessageHandler.GetMessage(messageCollection.Sequence, messageCollection.UserFrom));
            }

            MessageCollectionData collectionData = new MessageCollectionData()
            {
                MessageList = new List <MessageData>()
            };
            List <MessageData> dataList = BaseMessageHandler.PreProcess(messageCollection);

            dataList.ForEach(t =>
            {
                var handler = BaseMessageHandler.CreateHandler(t.MessageType);
                MessageCollectionData tmpCollection = handler.HandleMessage(t, messageCollection.Sequence);
                collectionData.Sequence             = tmpCollection.Sequence;
                collectionData.UserFrom             = tmpCollection.UserFrom;
                collectionData.MessageList.AddRange(tmpCollection.MessageList);
            });

            return(collectionData);
        }
        public void ShouldSerializeMonster()
        {
            var serializer = BaseMessageHandler.CreateSerializer();

            var initialValue = new MonsterModel
            {
                Id       = "em_001",
                Ailments = new List <AilmentModel>
                {
                    new AilmentModel
                    {
                        Buildup = 41.23f,
                        Index   = 42
                    }
                },
                Parts = new List <MonsterPartModel>
                {
                    new MonsterPartModel
                    {
                        Health = 32.42f,
                        Index  = 0
                    },
                    new MonsterPartModel
                    {
                        Health = 23.42f,
                        Index  = 1
                    }
                }
            };

            var serialized = SerializeToString(serializer, initialValue);

            this.testOutput.WriteLine(serialized);
            var deserialized = DeserializeFromString <MonsterModel>(serializer, serialized);

            Assert.Equal(initialValue, deserialized);
        }
Пример #21
0
        public async Task <MessageListModel> Send(SendMessageModel model, int userId, Language language, string deviceId)
        {
            string sentMessage;
            var    caller = await _repository.Filter <User>(u => u.Id == userId).FirstOrDefaultAsync();

            if (caller == null)
            {
                throw new Exception("caller not found");
            }
            var conversation = await _repository.Filter <Conversation>(x => x.Id == model.ConversationId)
                               .FirstOrDefaultAsync();

            if (conversation.AnnouncementCreatorId != caller.Id && conversation.QuestionerId != caller.Id)
            {
                throw new Exception(_optionsBinder.Error().NotParticipating);
            }
            if (conversation.AnnouncementCreatorConversationIsDeleted || conversation.QuestionerConversationIsDeleted)
            {
                conversation.QuestionerConversationIsDeleted          = false;
                conversation.AnnouncementCreatorConversationIsDeleted = false;
                _repository.Update(conversation);
            }

            var  body            = model.MessageText;
            var  messageBodyType = MessageBodyType.Text;
            long length          = 0;

            if (model.File != null)
            {
                messageBodyType = MessageBodyType.Image;
                body            = await _accessor.Upload(model.File, UploadType.MessageFiles, conversation.Id);

                var extension = Path.GetExtension(body);
                if (extension != ".jpg" && extension != ".jpeg" && extension != ".png")
                {
                    messageBodyType = MessageBodyType.File;
                }
                length = await _accessor.GetLength(body, UploadType.MessageFiles, conversation.Id);
            }
            int?replayValue = null;
            var receiverId  = conversation.AnnouncementCreatorId == caller.Id
              ? conversation.QuestionerId
              : conversation.AnnouncementCreatorId;
            var message = _repository.Create(new Message
            {
                ConversationId  = conversation.Id,
                MessageBodyType = messageBodyType,
                MessageText     = body,
                SenderId        = caller.Id,
                FileLength      = length,
                ReciverId       = receiverId,
                ReplayMessageId = model.ReplayMessageId.HasValue ? model.ReplayMessageId.Value : replayValue
            });
            await _repository.SaveChangesAsync();

            int unreadConversationCount = _repository.Filter <Message>(m => m.ReciverId == receiverId && !m.IsSeen).GroupBy(m => m.ConversationId).Count();
            var success = _repository.FilterAsNoTracking <PersonSetting>(x => x.UserId == receiverId).Where(x =>
                                                                                                            x.SubscriptionsType == SubscriptionsType.EnableMessageNotification).Count();
            var notify = (new MessageListModel
            {
                SenderId = caller.Id,
                FullName = message.User != null ? message.User.FullName : "User",
                Photo = message.User != null ? new ImageOptimizer
                {
                    Photo = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                     UploadType.ProfilePhoto, message.User.ProfilePhoto, ConstValues.Width, ConstValues.Height, false, 0),
                    PhotoBlur = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                         UploadType.ProfilePhoto, message.User.ProfilePhoto, 100, 100, true, 0)
                } : new ImageOptimizer(),
                CreatedDate = new DateTime(message.CreatedDt.Ticks),
                IsSentFromMe = false,
                MessageId = message.Id,
                MessageBodyType = messageBodyType,
                MessageText = message.MessageBodyType == MessageBodyType.Image
                    ? Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                               UploadType.MessageFiles, message.MessageText, 200, 200, false, conversation.Id) : message.MessageText,
                FileSize = length,
                FileUrl = messageBodyType == MessageBodyType.File
                    ? Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaDownload,
                                               UploadType.MessageFiles, message.MessageText, false, conversation.Id) : null,
                ReplayMessage = message.ReplayMessageId != null ? await _repository.Filter <Message>(s => s.Id == message.ReplayMessageId)
                                .Select(s => new MessageListModel
                {
                    MessageBodyType = s.MessageBodyType,
                    Photo = s.User != null ? new ImageOptimizer
                    {
                        Photo = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                         UploadType.ProfilePhoto, s.User.ProfilePhoto, ConstValues.Width, ConstValues.Height, false, 0),
                        PhotoBlur = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                             UploadType.ProfilePhoto, s.User.ProfilePhoto, 100, 100, true, 0)
                    } : new ImageOptimizer(),
                    SenderId = s.SenderId,
                    FullName = s.User != null ? s.User.FullName : "User",
                    MessageId = s.Id,
                    MessageText = s.MessageBodyType == MessageBodyType.Image ?
                                  Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                           UploadType.MessageFiles, s.MessageText, 1000, 1000, false, conversation.Id) : s.MessageText,
                    CreatedDate = s.CreatedDt,
                    IsSentFromMe = s.SenderId == caller.Id,
                    FileUrl = s.MessageBodyType == MessageBodyType.File ?
                              Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaDownload,
                                                       UploadType.MessageFiles, s.MessageText, false, conversation.Id) : null,
                    FileSize = s.FileLength
                }).FirstOrDefaultAsync() : null
            });

            var ann = _repository.Filter <Announcement>(a => a.Id == model.AnnouncementId).FirstOrDefault();

            if (ann != null)
            {
                await _activityService.AddOrUpdate(ann, caller.Id, false, ActivityType.Contacted);
            }
            var notifyToString = Utilities.SerializeObject(notify);
            var isSent         = await ChatMessageHandler.SendMessageAsync(conversation.Id, caller.Id, notifyToString, deviceId);

            if (isSent)
            {
                message.IsSeen = true;
                await _repository.SaveChangesAsync();
            }
            if (!isSent)
            {
                var receiverLanguage = await _repository.Filter <PersonOtherSetting>(x => x.UserId == receiverId)
                                       .Select(x => x.Language).FirstOrDefaultAsync();

                if (receiverLanguage == Language.English)
                {
                    sentMessage = "sent you a message";
                }
                else
                {
                    sentMessage = "ارسلت لك رساله";
                }
                await BaseMessageHandler.SendMessageAsync(conversation.Id, receiverId);

                if (success > 0)
                {
                    await _firebaseRepository.SendIndividualNotification(new NewMessageNotificationModel
                    {
                        SenderId    = caller.Id,
                        Description = messageBodyType == MessageBodyType.Image ? "Image" :
                                      messageBodyType == MessageBodyType.File ? "Photo" : model.MessageText,
                        GenericId               = conversation.Id,
                        NotificationType        = NotificationType.NewMessage,
                        ReceiverId              = receiverId,
                        Title                   = $"{caller.FullName} {sentMessage}",
                        UnreadConversationCount = unreadConversationCount
                    }, false);
                }
                await _firebaseRepository.SendIndividualNotification(new NewMessageNotificationModel
                {
                    SenderId    = caller.Id,
                    Description = messageBodyType == MessageBodyType.Image ? "Image" :
                                  messageBodyType == MessageBodyType.File ? "Photo" : model.MessageText,
                    GenericId               = conversation.Id,
                    NotificationType        = NotificationType.NewMessageGeneralInformation,
                    ReceiverId              = receiverId,
                    Title                   = $"{caller.FullName} {sentMessage}",
                    UnreadConversationCount = unreadConversationCount
                }, false);
            }
            return(notify);
        }
Пример #22
0
 protected virtual void InitMessageHandler()
 {
     _messageHandler = MessageHandlerFactory.GetNoMessageHandler();
 }
Пример #23
0
 private static void TestHandlerAndMessageWithHeader <T>(BaseMessageHandler <T> handler, T message, string tenantId = TenantId) where T : ActionMessage
 {
     Test.Handler(handler).SetIncomingHeader(ActionMessageHeaders.TenantId, tenantId).SetIncomingHeader(Headers.MessageId, "0").SetIncomingHeader(Headers.TimeSent, "0").OnMessage(message);
 }
Пример #24
0
        public static async Task Map(this HttpContext context, IEntityRepository repository)
        {
            var socket = await context.WebSockets.AcceptWebSocketAsync();

            context.Request.Query.TryGetValue("conversationId", out var conversationStringValues);
            if (conversationStringValues.Count == 0)
            {
                context.Request.Headers.TryGetValue("conversationId", out conversationStringValues);
            }
            int.TryParse(conversationStringValues, out var conversationId);
            var path = context.Request.Path.Value;

            if (conversationId == 0 && !path.Contains("supportBaseHub") && !path.Contains("baseHub") && !path.Contains("progressHub"))
            {
                return;
            }
            var userName = context.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            // var userId = int.Parse(context.User.Claims.Single(u => u.Type == "userId").Value);//check

            context.Request.Headers.TryGetValue("deviceId", out var deviceIdString);
            if (deviceIdString.Count == 0)
            {
                context.Request.Query.TryGetValue("deviceId", out deviceIdString);
            }
            var  deviceId = deviceIdString.FirstOrDefault();
            User user     = null;

            if (!string.IsNullOrEmpty(userName))
            {
                user = await repository.Filter <User>(x => x.Email == userName || // add verfiedBy
                                                      (x.PhoneCode + x.Phone) == userName).FirstOrDefaultAsync();
            }
            if (path.Contains("supportChatHub", StringComparison.InvariantCulture))
            {
                var guest = await repository.Filter <Guest>(x => x.DeviceId == deviceId).FirstOrDefaultAsync();

                if (user == null && guest == null)
                {
                    return;
                }
                await SupportChatMessageHandler.OnConnected(conversationId, user?.Id ?? guest.Id, socket, user == null, deviceId);

                await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                {
                    if (result.MessageType == WebSocketMessageType.Close)
                    {
                        await SupportChatMessageHandler.OnDisconnected(conversationId, user?.Id ?? guest.Id, user == null, deviceId);
                    }
                });
            }
            else
            {
                if (user == null)
                {
                    return;
                }
                if (path.Contains("chatHub", StringComparison.InvariantCulture))
                {
                    await ChatMessageHandler.OnConnected(conversationId, user.Id, socket, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await ChatMessageHandler.OnDisconnected(conversationId, user.Id, deviceId);
                        }
                    });
                }
                if (path.Contains("supportBaseHub", StringComparison.InvariantCulture))
                {
                    await SupportBaseMessageHandler.OnConnected(user.Id, socket, false, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await SupportBaseMessageHandler.OnDisconnected(user.Id, false, deviceId);
                        }
                    });
                }
                if (path.Contains("baseHub", StringComparison.InvariantCulture))
                {
                    await BaseMessageHandler.OnConnected(user.Id, socket, false, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await BaseMessageHandler.OnDisconnected(user.Id, false, deviceId);
                        }
                    });
                }
                if (path.Contains("progressHub", StringComparison.InvariantCulture))
                {
                    await AnnouncementProgressHandler.OnConnected(user.Id, socket, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await AnnouncementProgressHandler.OnDisconnected(user.Id, deviceId);
                        }
                    });
                }
            }
        }