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); }
private async Task SendEntityChangedMessage(GameInfoChangedMessage gameInfoChangedMessage) { await messageService.Publish(GameInfoChangedMessageTopic.Topic, null, gameInfoChangedMessage); }