private void RoomMessageHandler(ClientSendMessageToRoom command, int streamId, CommandAnswerContext answerContext) { var result = new ServerResponseBase(); var message = command.Message; var room = command.Room; lock (_users) { var ctx = ValidateUser(streamId, answerContext, result); if (answerContext.Answered) { return; } if (!ctx.Rooms.Contains(room)) { result.Status = ServerResponseStatus.Error; result.Description = $"You not in the room '{room}'!"; answerContext.TryAnswer(result); return; } var dests = _users.Where(u => u.Rooms.Contains(room)).Select(u => u.Stream).ToArray(); var messageCmd = new ServerRoomMessage { FromUser = ctx.Name, Message = message, Room = room }; _commandHandler.Notify(messageCmd, dests); } }
private void OnRoomMessage(ServerRoomMessage command, int streamId, CommandAnswerContext answerContext) { Console.WriteLine($"{command.Room}:{command.FromUser}: {command.Message}"); }