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;
		}
示例#2
0
 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);
 }
示例#3
0
        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);
        }