private Task OnGameChanged(string key, GameInfoChangedMessage gameInfoChangedMessage)
        {
            List <string>          userIds = gameInfoChangedMessage.GameInfo.GameUserInfoByUserIdDictionary.Keys.ToList();
            GameInfoChangedMessage sendGameInfoChangedMessage = gameInfoChangedMessage.Clone();

            for (var i = 0; i < sendGameInfoChangedMessage.GameInfo.GameQuestionInfo.QuestionInfoList.Count; i++)
            {
                sendGameInfoChangedMessage.GameInfo.GameQuestionInfo.QuestionInfoList[i] = null;
            }

            foreach (string userId in userIds)
            {
                Task.Run(async() =>
                {
                    try
                    {
                        await notificationService.Notify(userId,
                                                         NotificationType.EntityChanged,
                                                         JsonConvert.SerializeObject(new EntityChangedNotificationData(nameof(GameInfo),
                                                                                                                       JsonConvert.SerializeObject(sendGameInfoChangedMessage))));
                    }
                    catch (Exception e)
                    {
                        logger.LogError(e, "Error on send notification to user.");
                    }
                });
            }

            return(Task.CompletedTask);
        }
Пример #2
0
 private async Task SendEntityChangedMessage(GameInfoChangedMessage gameInfoChangedMessage)
 {
     await messageService.Publish(GameInfoChangedMessageTopic.Topic, null, gameInfoChangedMessage);
 }