Пример #1
0
        private void MessageReceived(object sender, EventArgs e)
        {
            var msgArgs = e as MessageEventArgs;

            if (msgArgs != null)
            {
                var      st       = new System.Diagnostics.Stopwatch();
                Response response = null;
                var      context  = new Context();
                try
                {
                    st.Start();
                    var eve = NuclioSerializationHelpers <Event> .Deserialize(msgArgs.Message);

                    context.Logger.LogEvent += LogEvent;
                    var result = InvokeFunction(context, eve);
                    response = CreateResponse(result);
                }
                catch (Exception ex)
                {
                    response = CreateResponse(ex);
                }
                finally
                {
                    st.Stop();
                    context.Logger.LogEvent -= LogEvent;
                    var metric = new Metric()
                    {
                        Duration = st.Elapsed.TotalSeconds
                    };
                    socketHandler.SendMessage(string.Join(String.Empty, "m", NuclioSerializationHelpers <Metric> .Serialize(metric), Environment.NewLine));
                    socketHandler.SendMessage(string.Join(String.Empty, "r", NuclioSerializationHelpers <Response> .Serialize(response), Environment.NewLine));
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Handle the command
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="nickname"></param>
        /// <param name="rawMessage"></param>
        /// <returns></returns>
        public async Task <string> Handle(WebSocket socket, string nickname, string rawMessage)
        {
            var result          = "";
            var messageSplitted = rawMessage.Split(' ');

            if (!IsValidCommand(messageSplitted[0].Replace("/", string.Empty), messageSplitted.Length))
            {
                result = ServerMessageConstants.GetMessage(ServerMessageConstants.COMMAND_INVALID, messageSplitted[0]);
                await _socketHandler.SendMessage(socket, result);
            }

            switch (messageSplitted[0])
            {
            case "/p":
                result = await SendPrivateMessageCommand(socket, nickname, rawMessage, messageSplitted);

                break;

            case "/exit":
                result = await ExecuteExitCommand(socket);

                break;

            case "/changenickname":
                result = await ChangeNickNameCommand(socket, nickname, messageSplitted);

                break;

            case "/help":
                result = await ShowHelpListCommand(socket);

                break;
            }
            return(result);
        }
        /// <summary>
        /// Handle the client registration
        /// </summary>
        /// <param name="socket"></param>
        /// <param name="nickname"></param>
        /// <param name="rawMessage"></param>
        /// <returns></returns>
        public async Task <string> Handle(WebSocket socket, string nickname, string rawMessage)
        {
            var result = "";

            if (!IsValidNickName(rawMessage))
            {
                result = ServerMessageConstants.GetMessage(ServerMessageConstants.NICKNAME_INVALID, rawMessage);
                await _socketHandler.SendMessage(socket, result);

                return(result);
            }

            if (_connectionManager.IsNickNameExists(rawMessage))
            {
                result = ServerMessageConstants.GetMessage(ServerMessageConstants.NICKNAME_ALREADY_TAKEN, rawMessage);
                await _socketHandler.SendMessage(socket, result);

                return(result);
            }


            if (_connectionManager.RegisterNickName(socket, rawMessage))
            {
                result = ServerMessageConstants.GetMessage(ServerMessageConstants.SUCCESSFULLY_REGISTERED, rawMessage);
                await _socketHandler.SendMessage(socket, result);

                var message = ServerMessageConstants.GetMessage(ServerMessageConstants.JOINED_GENERAL_CHANNEL, rawMessage);
                await _socketHandler.SendMessageToAll(message);
            }
            return(result);
        }