Ejemplo n.º 1
0
        protected EngineIOTransport(EngineIOClientOption Option)
        {
            this.Option = Option;

            ReadyState = EngineIOReadyState.CLOSED;
            Writable   = false;

            Semaphore.Release();
        }
Ejemplo n.º 2
0
        public EngineIOPolling(EngineIOClientOption Option) : base(Option)
        {
            Semaphores.Add(EngineIOHttpMethod.GET, new Semaphore(0, 1));
            Semaphores.Add(EngineIOHttpMethod.POST, new Semaphore(0, 1));

            foreach (Semaphore Semaphore in Semaphores.Values)
            {
                Semaphore.Release();
            }
        }
Ejemplo n.º 3
0
        public EngineIOWebSocket(EngineIOClientOption Option) : base(Option)
        {
            StringBuilder URL = new StringBuilder();

            URL.Append(string.Format("{0}://{1}:{2}{3}", (EngineIOScheme)(Option.Scheme + 2), Option.Host, Option.Port, Option.Path)).Append('?');

            foreach (string Key in new List <string>(Option.Query.Keys))
            {
                URL.Append(Key).Append('=').Append(Option.Query[Key]).Append('&');
            }

            URL.Append("transport=websocket");

            if (Option.TimestampRequests ?? false)
            {
                URL.Append(string.Format("&{0}={1}", Option.TimestampParam, EngineIOTimestamp.Generate()));
            }

            WebSocket = new WebSocket(URL.ToString(), Option.WebSocketSubprotocols)
            {
                Compression   = CompressionMethod.Deflate,
                CustomHeaders = Option.ExtraHeaders,
            };

            if (Option.WithCredentials && WebSocket.IsSecure)
            {
                WebSocket.SslConfiguration.ServerCertificateValidationCallback = Option.ServerCertificateValidationCallback;
                WebSocket.SslConfiguration.ClientCertificateSelectionCallback  = Option.ClientCertificateSelectionCallback;

                if (Option.ClientCertificates != null)
                {
                    WebSocket.SslConfiguration.ClientCertificates = Option.ClientCertificates;
                }
            }

            WebSocket.OnOpen    += OnWebSocketOpen;
            WebSocket.OnClose   += OnWebSocketClose;
            WebSocket.OnMessage += OnWebSocketMessage;
            WebSocket.OnError   += OnWebSocketError;
            WebSocket.Log.Output = EngineIOLogger.WebSocket;
        }