Ejemplo n.º 1
0
        /// <summary>
        /// Initializes static members of the <see cref="Successor"/> class.
        /// </summary>
        static Successor()
        {
            Handlers = new List <BaseHandler>()
            {
                // Сортировать желательно по частоте применимости
                new DialogHandler(),
                new ChatHandler(),
                new AuthHandler(),
            };

            InvalidHandler = new InvalidHandler();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// The handle.
        /// </summary>
        /// <param name="socket">
        /// The socket.
        /// </param>
        /// <param name="webSocketMessage">
        /// The message type.
        /// </param>
        /// <param name="server">
        /// The server.
        /// </param>
        public static void Handle(IWebSocketConnection socket, string webSocketMessage, IServer server)
        {
            var messageType = Newtonsoft.Json.JsonConvert
                              .DeserializeObject <WebSocketMessage <Payloads.BaseMessage> >(webSocketMessage).Type;

            foreach (var handler in Handlers)
            {
                if (handler.CanHandle(socket, messageType, server))
                {
                    handler.Handle(socket, webSocketMessage, server);
                    return;
                }
            }

            InvalidHandler.Handle(socket, webSocketMessage, server);
        }