private int _timeout; // In Seconds public WebSocketTransportGeneric(string endpoint, IJsonMarshaller marshaller, ILogger logger, int timeout = 60) { Endpoint = endpoint; _logger = logger; _marshaller = marshaller; _timeout = timeout; _ws = new WebSocket(endpoint); _ws.OnMessage += (sender, e) => { if (e.IsPing) { logger.Logf(LogLevel.Trace, "WebSocketTransport: Ping received."); return; } OnMessage(e); }; _ws.OnOpen += (sender, e) => { OnOpen(); }; _ws.OnError += (sender, e) => { OnError(e); }; _ws.OnClose += (sender, e) => { OnClose(e); }; _ws.Compression = CompressionMethod.Deflate; _ws.EmitOnPing = true; _state = WebSocketTransportState.Stopped; _headersUpdated = true; _requests = new Dictionary <string, WSRequest>(); _dispatcher = new Dispatcher <C, string>(); }
public void Close() { if (_state == WebSocketTransportState.Stopped || _state != WebSocketTransportState.Stopping) { return; } _state = WebSocketTransportState.Stopping; _ws.Close(CloseStatusCode.Away); }
public bool Open() { if (_state != WebSocketTransportState.Stopped) { return(false); } _state = WebSocketTransportState.Connecting; _ws.ConnectAsync(); return(true); }
private void OnOpen() { _logger.Logf(LogLevel.Debug, "WebSocketTransport: Opened socket."); _state = WebSocketTransportState.Connected; }
private void OnClose(CloseEventArgs e) { _logger.Logf(LogLevel.Debug, "WebSocketTransport: Closed socket. Code: {0} Reason: {1}", e.Code, e.Reason); _state = WebSocketTransportState.Stopped; }