public Task Connect(string host, CancellationToken cancelToken) { _webSocket = new WSSharpNWebSocket(host); _webSocket.EmitOnPing = false; _webSocket.EnableRedirection = true; _webSocket.Compression = WebSocketSharp.CompressionMethod.Deflate; _webSocket.SetProxy(_config.ProxyUrl, _config.ProxyCredentials?.UserName, _config.ProxyCredentials?.Password); _webSocket.OnMessage += (s, e) => { if (e.Type == WebSocketSharp.Opcode.Binary) RaiseBinaryMessage(e.RawData); else if (e.Type == WebSocketSharp.Opcode.Text) RaiseTextMessage(e.Data); }; _webSocket.OnError += async (s, e) => { _parent.RaiseOnLog(LogMessageSeverity.Error, e.Exception?.GetBaseException()?.Message ?? e.Message); await _parent.DisconnectInternal(e.Exception, skipAwait: true).ConfigureAwait(false); }; _webSocket.OnClose += async (s, e) => { string code = e.WasClean ? e.Code.ToString() : "Unexpected"; string reason = e.Reason != "" ? e.Reason : "No Reason"; Exception ex = new Exception($"Got Close Message ({code}): {reason}"); await _parent.DisconnectInternal(ex, skipAwait: true).ConfigureAwait(false); }; _webSocket.Log.Output = (e, m) => { }; //Dont let websocket-sharp print to console _webSocket.Connect(); return TaskHelper.CompletedTask; }
public Task Connect(string host, CancellationToken cancelToken) { _webSocket = new WSSharpNWebSocket(host); _webSocket.EmitOnPing = false; _webSocket.EnableRedirection = true; _webSocket.Compression = WebSocketSharp.CompressionMethod.Deflate; _webSocket.SetProxy(_config.ProxyUrl, _config.ProxyCredentials?.UserName, _config.ProxyCredentials?.Password); _webSocket.OnMessage += (s, e) => { if (e.Type == WebSocketSharp.Opcode.Binary) { RaiseBinaryMessage(e.RawData); } else if (e.Type == WebSocketSharp.Opcode.Text) { RaiseTextMessage(e.Data); } }; _webSocket.OnError += async(s, e) => { _parent.RaiseOnLog(LogMessageSeverity.Error, e.Exception?.GetBaseException()?.Message ?? e.Message); await _parent.DisconnectInternal(e.Exception, skipAwait : true).ConfigureAwait(false); }; _webSocket.OnClose += async(s, e) => { string code = e.WasClean ? e.Code.ToString() : "Unexpected"; string reason = e.Reason != "" ? e.Reason : "No Reason"; Exception ex = new Exception($"Got Close Message ({code}): {reason}"); await _parent.DisconnectInternal(ex, skipAwait : true).ConfigureAwait(false); }; _webSocket.Log.Output = (e, m) => { }; //Dont let websocket-sharp print to console _webSocket.Connect(); return(TaskHelper.CompletedTask); }
public static void WsConnect(BotData data, string url) { data.Logger.LogHeader(); var ws = new WebSocketSharp.WebSocket(url); // Set the proxy if (data.UseProxy) { if (data.Proxy.Type != Models.Proxies.ProxyType.Http) { throw new NotSupportedException("Only http proxies are supported"); } else { ws.SetProxy($"http://{data.Proxy.Host}:{data.Proxy.Port}", data.Proxy.Username, data.Proxy.Password); } } data.Objects["webSocket"] = ws; var wsMessages = new List <string>(); data.Objects["wsMessages"] = wsMessages; // Hook the listener ws.OnMessage += (sender, e) => { lock (wsMessages) wsMessages.Add(e.Data); }; // Connect ws.Connect(); data.Logger.Log($"The Web Socket client connected to {url}", LogColors.MossGreen); }