示例#1
0
        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);
            }
        }
示例#2
0
 private void OnRoomMessage(ServerRoomMessage command, int streamId, CommandAnswerContext answerContext)
 {
     Console.WriteLine($"{command.Room}:{command.FromUser}: {command.Message}");
 }