protected EngineIOTransport(EngineIOClientOption Option) { this.Option = Option; ReadyState = EngineIOReadyState.CLOSED; Writable = false; Semaphore.Release(); }
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(); } }
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; }