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 IEnumerator Connect()
        {
            m_Socket            = new WebSocketSharp.WebSocket(mUrl.ToString());
            m_Socket.OnMessage += (sender, e) => { m_Messages.Enqueue(e.RawData); };
            m_Socket.OnOpen    += (sender, e) => { IsConnected = true; };
            m_Socket.OnError   += (sender, e) => {
                error = e.Message;
                Logs.Error(e.Message);
            };
            m_Socket.OnClose += (sender, args) => IsConnected = false;

            if (SuportsThreads)
            {
                ThreadPool.QueueUserWorkItem(status => { m_Socket.Connect(); });
            }
            else
            {
                m_Socket.Connect();
            }

            IsConnecting = true;
            while (!IsConnected && error == null)
            {
                yield return(null);
            }
            IsConnecting = false;
        }
示例#3
0
        public IEnumerator Connect()
        {
            m_Socket            = new WebSocketSharp.WebSocket(mUrl.ToString());
            m_Socket.OnMessage += (sender, e) =>
            {
                m_Messages.Enqueue(e.RawData);
            };
            m_Socket.OnOpen += (sender, e) =>
            {
                m_IsConnected = true;
            };
            m_Socket.OnError += (sender, e) =>
            {
                m_Error = e.Message;
                Logs.Error(e.Message);
            };
            m_Socket.OnClose += (sender, args) => m_IsConnected = false;

            if (SupportsThreads)
            {
                //HACK: When restarting in the Unity Editor, send a ping to the destination first to avoid having Connect() hang for 90 seconds.
                //https://github.com/alvyxaz/barebones-masterserver/pull/142

                //Note: On Windows Store Apps, a stream socket is used to mimic ping functionality. It will try to open connection to specified ip address with port 80. Also you need to enable InternetClient capability in Package.appxmanifest.
                //https://docs.unity3d.com/ScriptReference/Ping.html
                Ping ping = new Ping(mUrl.Host);

                //The ping send/receive takes about a second, so we wait for it to complete.
                while (!ping.isDone)
                {
                    yield return(null);
                }

                //If the ping succeeded, the time will be 0 or higher, otherwise -1.
                if (ping.time >= 0)
                {
                    runThread(() =>
                    {
                        m_Socket.Connect();
                    });
                }
                else
                {
                    m_Error = "Barebones Websocket: Could not contact \"" + mUrl.Host + "\" with Ping.";
                }
            }
            else
            {
                m_Socket.Connect();
            }

            IsConnecting = true;
            while (!m_IsConnected && m_Error == null)
            {
                yield return(null);
            }
            IsConnecting = false;
        }
示例#4
0
        public void joinWithMethod(string method)
        {
            if (Client != null)
            {
                appendChat("Error: attempted to join again whilst already join(ed/ing)", clr: Color.Purple);
                return;
            }
            appendChat($"Joining game...", clr: Color.Blue);
#if DEBUG
            Client = new WebSocketSharp.WebSocket($"ws://localhost:4650/chess");
#else
            Client = new WebSocketSharp.WebSocket($"ws://ml-api.uk.ms:4650/chess");
#endif
            Client.Log.Output = (x, y) =>
            {
                Console.WriteLine($"{x.Date} {x.Message} {y}");
            };
            Client.OnMessage += Client_OnMessage;
            Client.OnClose   += Client_OnClose;
            Client.OnError   += Client_OnError;
            Client.Connect();
            var jobj = new JObject();
            jobj["token"] = getToken();
            jobj["mode"]  = method;
            jobj["cheat"] = Program.Options.UseAntiCheat;
            Send(new Packet(PacketId.ConnRequest, jobj));
        }
示例#5
0
        public void Connect()
        {
            client          = new WebSocketSharp.WebSocket(config.EnpointUri);
            client.WaitTime = new TimeSpan(0, 0, config.KeepAliveInSeconds);

            client.OnMessage += (sender, e) =>
            {
                SSAPMessage <SSAPBodyMessage> message = SSAPMessage <SSAPBodyMessage> .FromJson <SSAPBodyMessage>(e.Data);

                if (message.MessageType != SSAPMessageTypesEnum.INDICATION)
                {
                    Callback c;
                    callbacks.TryDequeue(out c);
                    c.Handle(e.Data);
                }
                else
                {
                    foreach (IListener4SIBIndicationNotifications listener in subscriptionListeners)
                    {
                        Action a = () => { listener.OnIndication("", message); };
                        Task.Factory.StartNew(a);
                    }
                }
            };
            client.Connect();
        }
示例#6
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);
 }
        public void WebSocketSharpRoundTrip()
        {
            var serializer = new JsonCommonSerializer();

            var port = new Random().Next(20000, 60000);

            var server = WebApp.Start <Startup>("http://localhost:" + port + "/");

            var client          = new WebSocketSharp.WebSocket("ws://localhost:" + port + "/rt1");
            var clientTransport = client.GenerateTransportSource();
            var clientRouter    = new DefaultMessageRouter(clientTransport, serializer);
            var proxy           = clientRouter.AddInterface <IMyService>();

            client.Connect();

            var result = proxy.Add(3, 4).Result;

            Assert.Equal(7, result);

            clientRouter.Dispose();
            clientTransport.Dispose();
            client.Close();

            server.Dispose();
        }
示例#8
0
        /// <inheritdoc/>
        public void Connect(string uri)
        {
            client = new WebSocketSharp.WebSocket(uri);

            client.OnMessage += (sender, e) =>
            {
                MessageReceived?.Invoke(e.Data);
            };

            client.OnClose += (sender, e) =>
            {
                OnDisconnected?.Invoke();
            };

            client.OnOpen += (sender, e) =>
            {
                OnConnected?.Invoke();
            };

            client.OnError += (sender, e) =>
            {
                OnError?.Invoke(e.Message);
            };

            client.Connect();
        }
		public void BasicRoundTrip()
		{
			var serializer = new JsonCommonSerializer();

			var port = new Random().Next(6000, 60000);

			var listener = new WebSocketServer("ws://localhost:" + port);
			var serverTransport = listener.GenerateTransportSource("/p1");
			var serverRouter = new DefaultMessageRouter(serverTransport, serializer);
			serverRouter.AddService<IMyService>(new MyService());
			listener.Start();

			var client = new WebSocket("ws://localhost:" + port + "/p1");
			var clientTransport = client.GenerateTransportSource();
			var clientRouter = new DefaultMessageRouter(clientTransport, serializer);
			var proxy = clientRouter.AddInterface<IMyService>();
			client.Connect();

			var result = proxy.Add(3, 4).Result;
			Assert.Equal(7, result);

			clientRouter.Dispose();
			clientTransport.Dispose();
			client.Close();

			serverRouter.Dispose();
			serverTransport.Dispose();
			listener.Stop();
		}
 public static string StartWSSession(string url, string cmd)
 {
     string reply = null;
     using (var ws = new WebSocketSharp.WebSocket(url))
     {
         int received = 0;
         // Set the WebSocket events.
         ws.OnOpen += (sender, e) =>
         {
             Response jsonmsg = new Response();
             jsonmsg.Identifier = 2000;
             jsonmsg.Message = cmd;
             jsonmsg.Name = "PowershellWS";
             string output = JsonConvert.SerializeObject(jsonmsg);
             ws.Send(output);
         };
         ws.OnMessage += (sender, e) => {
             Response response = JsonConvert.DeserializeObject<Response>(e.Data);
             if (response.Identifier == 2000) {
                 Console.WriteLine(response.Message);
                 reply = response.Message;
                 received ++;
                 ws.Close();
             }
         };
         ws.OnError += (sender, e) =>
             Console.WriteLine(e.Message);
         ws.OnClose += (sender, e) =>
             Console.WriteLine(e.Reason);
         // Connect to the server.
         ws.Connect();
         while (received < 1){Thread.Sleep(1);}
     }
     return reply;
 }
示例#11
0
 public override void Connect()
 {
     base.Connect();
     //_socket.ConnectAsync();
     _socket.Connect();
     _socket.Send("BALUS");
 }
示例#12
0
        private void ExecuteInForeground()
        {
            WebSocketSharp.WebSocket ws = new WebSocketSharp.WebSocket(url);
            Debug.Log("connecting... " + url);

            ws.OnMessage += (sender, e) => MassageCallBack(e.RawData);

            while (true)
            {
                ws.Connect();

                while (!ws.IsConnected)
                {
                    Thread.Sleep(1000);
                }

                while (ws.IsConnected)
                {
                    byte[] data = PopAgentState();
                    if (data != null)
                    {
                        ws.Send(data);
                    }
                    //Thread.Sleep(0);
                }
            }
        }
示例#13
0
        public void TestEchoSignalingServer()
        {
            // Modeling situtaion, when connected client send some message through the signaling mechanism
            WebSocketSharp.WebSocket receiver = new WebSocketSharp.WebSocket(url_of_signaling, tokens_to_signaling);
            receiver.Connect();
            receiver.Send(Correct_Message);
            // Time to receive result by Testing object
            Thread.Sleep(450);

            receiver.Close();
            string TestResult = Tested_Object.LastReceivedMessage;

            Tested_Object.Dispose();

            //Console.WriteLine(TestResult);
            //Console.WriteLine(Tested_Object.LastReceivedMessage);
            //string TestResult2 = TestResult;
            //TestResult2 += "aaa";
            //Console.WriteLine(TestResult2);
            //output: Hello world!!!aaa, but TestResult: Hello world!!!
            // and string referece type, where here is problem? String class have value semantic.

            Assert.AreEqual(Correct_Message, TestResult);
            Assert.Pass();
        }
示例#14
0
文件: JihuaTask.cs 项目: luluy/ylapp
 private void connect()
 {
     if (wss != null)
     {
         wss.Close();
     }
     wss            = new WebSocketSharp.WebSocket("ws://1.85.44.234:9612");
     wss.WaitTime   = new TimeSpan(0, 0, 8);
     wss.OnMessage += (s, e1) => {
         Console.WriteLine(e1.Data);
         sockobj d = JsonConvert.DeserializeObject <sockobj>(e1.Data);
         if (d.op == "4D")
         {
             update(d);
         }
     };
     wss.OnOpen += (s, e1) => {
         String a = "{ctp:\"0\",uid:\"" + user0 + "\",utp:\"1\",op:\"0\"}";
         lock (wss_lock)
         {
             wss.Send(a);
         }
         Console.WriteLine(" websocket open!");
     };
     wss.OnClose += (s, e1) =>
     {
         Console.WriteLine("close!");
     };
     wss.OnError += (s, e1) =>
     {
         Console.WriteLine("error1");
     };
     wss.Connect();
 }
示例#15
0
        public void BasicRoundTrip()
        {
            var serializer = new JsonCommonSerializer();

            var port = new Random().Next(6000, 60000);

            var listener        = new WebSocketServer("ws://localhost:" + port);
            var serverTransport = listener.GenerateTransportSource("/p1");
            var serverRouter    = new DefaultMessageRouter(serverTransport, serializer);

            serverRouter.AddService <IMyService>(new MyService());
            listener.Start();

            var client          = new WebSocket("ws://localhost:" + port + "/p1");
            var clientTransport = client.GenerateTransportSource();
            var clientRouter    = new DefaultMessageRouter(clientTransport, serializer);
            var proxy           = clientRouter.AddInterface <IMyService>();

            client.Connect();

            var result = proxy.Add(3, 4).Result;

            Assert.Equal(7, result);

            clientRouter.Dispose();
            clientTransport.Dispose();
            client.Close();

            serverRouter.Dispose();
            serverTransport.Dispose();
            listener.Stop();
        }
示例#16
0
        private T SendAndReciveObject <T>(CainiaoPrintDocumentRequest request, string printServerAdd) where T : CainiaoPrintDocumentResponse
        {
            WebSocketSharp.WebSocket webSocket = new WebSocketSharp.WebSocket(printServerAdd);

            try
            {
                webSocket.OnMessage += WebSocket_OnMessage;
                webSocket.OnOpen    += WebSocket_OnOpen;
                webSocket.OnError   += WebSocket_OnError;

                this.data  = "";
                this.error = "";
                this.autoResetEvent.Reset();

                //连接
                webSocket.Connect();
                if (autoResetEvent.WaitOne(5 * 1000) == false)
                {
                    throw new Exception("等待回收数据超时:5秒");
                }
                if (string.IsNullOrWhiteSpace(this.error) == false || webSocket.ReadyState != WebSocketSharp.WsState.OPEN)
                {
                    throw new Exception("连接打印组件错误,请检查菜鸟或者拼多多打印组件是否开启:" + this.error);
                }

                //发送数据
                webSocket.Send(Newtonsoft.Json.JsonConvert.SerializeObject(request));
                if (autoResetEvent.WaitOne(60 * 1000) == false)
                {
                    throw new Exception("等待回收数据超时:60秒");
                }
                if (string.IsNullOrWhiteSpace(this.data))
                {
                    throw new Exception("打印组件发送数据失败,没有返回数据:" + this.error);
                }
                var response = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(this.data);
                if (request.requestID != response.requestID)
                {
                    throw new Exception("发送的请求:" + request.requestID + " 与返回的请求不匹配:" + response.requestID);
                }
                if (response.status.Equals("success", StringComparison.OrdinalIgnoreCase) == false)
                {
                    throw new Exception("发送指令失败:" + response.msg);
                }
                return(response);
            }
            catch (AggregateException ae)
            {
                throw new Exception("连接打印组件错误,请打印是否开启", ae.InnerException);
            }
            finally
            {
                //关闭连接
                if (webSocket != null && webSocket.IsAlive)
                {
                    webSocket.Close();
                }
            }
        }
示例#17
0
        private void MarketData()
        {
            decimal  openPrice     = 0;
            decimal  closePrice    = 0;
            decimal  highPrice     = 0;
            decimal  lowPrice      = 0;
            DateTime hourTimestamp = DateTime.UtcNow;

            using (var ws = new WebSocketSharp.WebSocket("wss://www.bitmex.com/realtime"))
            {
                ws.OnMessage += (sender, e) =>
                {
                    CryptoLib.Models.Bitmex.Model <CryptoLib.Models.Bitmex.Quote> incomingObject = JsonConvert.DeserializeObject <CryptoLib.Models.Bitmex.Model <CryptoLib.Models.Bitmex.Quote> >(e.Data);
                    PropertyInfo[] incomingProperties = incomingObject.data.FirstOrDefault().GetType().GetProperties();

                    if (incomingObject.data.FirstOrDefault().timestamp.Date > hourTimestamp.Date || incomingObject.data.FirstOrDefault().timestamp.Hour > hourTimestamp.Hour || incomingObject.data.FirstOrDefault().timestamp.Minute > hourTimestamp.Minute)
                    {
                        CryptoLib.MarketsEntities context    = new CryptoLib.MarketsEntities();
                        CryptoLib.MarketData      marketData = new CryptoLib.MarketData
                        {
                            InstrumentID = 1,
                            Timestamp    = incomingObject.data.FirstOrDefault().timestamp,
                            OpenPrice    = openPrice,
                            ClosePrice   = closePrice,
                            HighPrice    = highPrice,
                            LowPrice     = lowPrice
                        };
                        if (marketData.OpenPrice != 0 && marketData.ClosePrice != 0 && marketData.HighPrice != 0 && marketData.LowPrice != 0)
                        {
                            context.MarketDatas.Add(marketData);
                            context.SaveChanges();
                        }

                        openPrice     = 0;
                        closePrice    = 0;
                        highPrice     = 0;
                        lowPrice      = 0;
                        hourTimestamp = incomingObject.data.FirstOrDefault().timestamp;
                    }

                    decimal incomingMidPrice = ((incomingObject.data.FirstOrDefault().askPrice + incomingObject.data.FirstOrDefault().bidPrice) / 2);
                    highPrice  = Math.Max(incomingMidPrice, highPrice);
                    lowPrice   = Math.Min(incomingMidPrice, lowPrice);
                    closePrice = incomingMidPrice;
                    if (openPrice == 0)
                    {
                        openPrice = incomingMidPrice;
                    }
                    if (lowPrice == 0)
                    {
                        lowPrice = incomingMidPrice;
                    }
                };

                ws.Connect();
                ws.Send("{\"op\": \"subscribe\", \"args\": \"quote:XBTUSD\"}");
                Console.ReadLine();
            }
        }
示例#18
0
        public static async Task Start(Session session, CancellationToken cancellationToken)
        {
            await Task.Delay(30000);//delay running 30s

            System.Net.ServicePointManager.Expect100Continue = false;

            cancellationToken.ThrowIfCancellationRequested();

            var socketURL = session.LogicSettings.DataSharingDataUrl;

            using (var ws = new WebSocketSharp.WebSocket(socketURL))
            {
                ws.Log.Level = WebSocketSharp.LogLevel.Error;
                //ws.OnMessage += (sender, e) =>
                // Console.WriteLine("New message from controller: " + e.Data);

                while (true)
                {
                    try
                    {
                        ws.Connect();
                        Logger.Write("Pokemon spawn point data service connection established.");
                        while (ws.ReadyState == WebSocketSharp.WebSocketState.Open)
                        {
                            lock (events)
                            {
                                while (events.Count > 0)
                                {
                                    if (ws.ReadyState == WebSocketSharp.WebSocketState.Open)
                                    {
                                        var item = events.Dequeue();
                                        var data = Serialize(item);
                                        ws.Send($"42[\"pokemon\",{data}]");
                                    }
                                }
                            }
                            await Task.Delay(POLLING_INTERVAL);

                            ws.Ping();
                        }
                    }
                    catch (IOException)
                    {
                        session.EventDispatcher.Send(new ErrorEvent
                        {
                            Message = "The connection to the data sharing location server was lost."
                        });
                    }
                    catch (Exception)
                    {
                    }
                    finally
                    {
                        //everytime disconnected with server bot wil reconnect after 15 sec
                        await Task.Delay(POLLING_INTERVAL, cancellationToken);
                    }
                }
            }
        }
        public void Connect()
        {
            _webSocket = new WebSocketSharp.WebSocket(_address);

            _webSocket.OnOpen += (o, e) => { if (OnOpen != null) OnOpen(); };
            _webSocket.OnMessage += (o, s) => { if (OnMessage != null) OnMessage(s); };
            _webSocket.Connect();
        }
示例#20
0
        public async Task Connect()
        {
            var taskSource = new TaskCompletionSource <bool>();

            _webSocket.OnOpen  += (sender, args) => { taskSource?.SetResult(true); };
            _webSocket.OnError += (sender, args) => { taskSource?.SetException(args.Exception); };
            _webSocket.Connect();
            await taskSource.Task;
        }
示例#21
0
        void InitWebsocketConnection()
        {
            Uri wsUri = new Uri("ws://192.168.0.184:4040/main.html", UriKind.Absolute);

            wsClient = new WebSocketSharp.WebSocket(wsUri.AbsoluteUri);
            wsClient.Connect();
            isWSConnected       = true;
            wsClient.OnOpen    += WsClient_OnOpen;
            wsClient.OnMessage += WsClient_OnMessage;
        }
		public Task Connect(string host, CancellationToken cancelToken)
		{
			_webSocket = new WSSharpNWebSocket(host);
			_webSocket.EmitOnPing = false;
			_webSocket.EnableRedirection = true;
			_webSocket.Compression = WebSocketSharp.CompressionMethod.None;
            _webSocket.OnMessage += (s, e) => RaiseProcessMessage(e.Data);
			_webSocket.OnError += (s, e) => _parent.RaiseOnLog(LogMessageSeverity.Error, $"Websocket Error: {e.Message}");
			_webSocket.Connect();
			return TaskHelper.CompletedTask;
		}
示例#23
0
 public void UserStreamWebSocket(string listenKey)
 {
     webSocket            = new WebSocketSharp.WebSocket($"wss://stream.binance.com:9443/ws/{listenKey}");
     webSocket.OnMessage += (sender, e) =>
     {
         string jsonLine = e.Data;//.Replace(",[]", "");
         Console.WriteLine(jsonLine + "==========");
     };
     webSocket.OnError += (sender, e) => Console.WriteLine(e.Message);
     webSocket.OnOpen  += (sender, e) => Console.WriteLine("Open");
     webSocket.Connect();
 }
示例#24
0
        void Start()
        {
            StartNewEpisode();
            ws = new WebSocketSharp.WebSocket(url);
            Debug.Log("connecting... " + url);
            ws.Connect();

            ws.OnMessage += (sender, e) => OnMassage(e.Data);
            // if using binary
            //ws.OnMessage += (sender, e) => OnMassage(e.RawData);

            lastSendTime = -cycleTimeStepSize;
        }
示例#25
0
        public void SendAsClient(Server server, IMessenger msgr, BaseTransportMessage msg)
        {
            var ctx = new WebSocketServerContext(server);
            var l   = server.ServerContext.L;

            Task.Run(() =>
            {
                l.Log("Establishing connection to local socket server.");
                using (var ws = new WebSocketSharp.WebSocket($"ws://{IPAddress.Loopback}:{ctx.Port}/"))
                {
                    var settings = new JsonSerializerSettings()
                    {
                        TypeNameHandling    = TypeNameHandling.Objects,
                        SerializationBinder = server.TypeBinder
                    };

                    var helper = new MessageTypedSender(C.M);

                    ws.OnMessage += (sender, args) =>
                    {
                        if (args.IsText)
                        {
                            var dataText = args.Data;
                            if (string.IsNullOrWhiteSpace(dataText))
                            {
                                return;
                            }

                            if (JsonConvert.DeserializeObject(dataText, settings) is BaseTransportMessage m)
                            {
                                helper.UnPackSendReceivedMessage(new ExternalMessage(m.SessionId, m));
                            }
                        }
                        else
                        {
                            throw new InvalidOperationException("Only text data is supported.");
                        }
                    };

                    ws.Connect();

                    var json = JsonConvert.SerializeObject(new HelloRequest(), settings);

                    ws.Send(json);

                    while (ws.IsAlive)
                    {
                    }
                }
            });
        }
示例#26
0
 public void Connect(String url)
 {
     Url = url;
     try{
         websocket            = new WebSocketSharp.WebSocket(url);
         websocket.OnOpen    += onOpen;
         websocket.OnError   += onError;
         websocket.OnClose   += onClose;
         websocket.OnMessage += onMessage;
         websocket.Connect();
     }
     catch (Exception ex) {
     }
 }
示例#27
0
        static StackObject *Connect_2(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 1);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            WebSocketSharp.WebSocket instance_of_this_method = (WebSocketSharp.WebSocket) typeof(WebSocketSharp.WebSocket).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            instance_of_this_method.Connect();

            return(__ret);
        }
示例#28
0
        private void Initiliaze()
        {
            Console.WriteLine();

            socket.Connect();
            //socket.Send("42[\"SubAdd\",{\"subs\":[\"0~Cryptsy~BTC-USD\",\"0~Bitstamp~BTC~USD\",\"0~OKCoin~BTC~USD\",\"0~Coinbase~BTC~USD\",\"0~Poloniex~BTC~USD\",\"0~Cexio~BTC~USD\",\"0~BTCE~BTC~USD\",\"0~BitTrex~BTC~USD\",\"0~Kraken~BTC~USD\",\"0~Bitfinex~BTC~USD\",\"0~LocalBitcoins~BTC~USD\",\"0~itBit~BTC~USD\",\"0~HitBTC~BTC~USD\",\"0~Coinfloor~BTC~USD\",\"0~Huobi~BTC~USD\",\"0~LakeBTC~BTC~USD\",\"0~Coinsetter~BTC~USD\",\"0~CCEX~BTC~USD\",\"0~MonetaGo~BTC~USD\",\"0~Gatecoin~BTC~USD\",\"0~Gemini~BTC~USD\",\"0~CCEDK~BTC~USD\",\"0~Exmo~BTC~USD\",\"0~Yobit~BTC~USD\",\"0~BitBay~BTC~USD\",\"0~QuadrigaCX~BTC~USD\",\"0~BitSquare~BTC~USD\",\"0~TheRockTrading~BTC~USD\",\"0~Quoine~BTC~USD\",\"0~LiveCoin~BTC~USD\"]}]");
            //socket.Send("42[\"SubAdd\",{\"subs\":[\"0~Cryptsy~BTC~USD\",\"0~Bitstamp~BTC~USD\",\"0~OKCoin~BTC~USD\",\"0~Coinbase~BTC~USD\",\"0~Poloniex~BTC~USD\",\"0~Cexio~BTC~USD\",\"0~BTCE~BTC~USD\",\"0~BitTrex~BTC~USD\",\"0~Kraken~BTC~USD\",\"0~Bitfinex~BTC~USD\",\"0~LocalBitcoins~BTC~USD\",\"0~itBit~BTC~USD\",\"0~HitBTC~BTC~USD\",\"0~Coinfloor~BTC~USD\",\"0~Huobi~BTC~USD\",\"0~LakeBTC~BTC~USD\",\"0~Coinsetter~BTC~USD\",\"0~CCEX~BTC~USD\",\"0~MonetaGo~BTC~USD\",\"0~Gatecoin~BTC~USD\",\"0~Gemini~BTC~USD\",\"0~CCEDK~BTC~USD\",\"0~Exmo~BTC~USD\",\"0~Yobit~BTC~USD\",\"0~BitBay~BTC~USD\",\"0~QuadrigaCX~BTC~USD\",\"0~BitSquare~BTC~USD\",\"0~TheRockTrading~BTC~USD\",\"0~Quoine~BTC~USD\",\"0~LiveCoin~BTC~USD\"]}]");
            socket.Send("42[\"SubAdd\",{\"subs\":[\"2~Bitfinex~BTC~USD\",\"2~Coinbase~BTC~USD\",\"2~Kraken~BTC~USD\",\"2~Poloniex~BTC~USD\",\"2~Bittrex~BTC~USD\"" +
                        ",\"2~Bitfinex~ETH~USD\",\"2~Coinbase~ETH~USD\",\"2~Kraken~ETH~USD\",\"2~Poloniex~ETH~USD\",\"2~Bittrex~ETH~USD\"" +
                        ",\"2~Bitfinex~XRP~BTC\",\"2~Coinbase~XRP~BTC\",\"2~Kraken~XRP~BTC\",\"2~Poloniex~XRP~BTC\",\"2~Bittrex~XRP~BTC\"" +
                        ",\"2~Bitfinex~REP~BTC\",\"2~Coinbase~REP~BTC\",\"2~Kraken~REP~BTC\",\"2~Poloniex~REP~BTC\",\"2~Bittrex~REP~BTC\"" +
                        ",\"5~CCCAGG~BTC~USD\",\"5~CCCAGG~ETH~USD\",\"5~CCCAGG~XRP~BTC\",\"5~CCCAGG~REP~BTC\"" +
                        "]}]");
        }
示例#29
0
 public MainWindow()
 {
     InitializeComponent();
     PositionWindowInStartupScreen();
     initDeviceTypes();
     if (Properties.Settings.Default.IsListeningToNetwork)
     {
         string serverURL = string.Format("ws://localhost:{0}/{1}", Properties.Settings.Default.WebSocketPort, Properties.Settings.Default.AnswerPage);
         networkListener            = new WebSocketSharp.WebSocket(serverURL);
         networkListener.OnMessage += NetworkListener_OnMessage;
         networkListener.Connect();
     }
     EnableLogPanel(false);
 }
        void ConnectInternal(string url)
        {
            _webSocket          = new WebSocketSharp.WebSocket(url);
            _webSocket.OnError += (sender, e) => {
                lock (_recvLock)
                    _errors.Enqueue(e.Message);
            };
            _webSocket.OnMessage += (sender, e) => {
                lock (_recvLock)
                    _messages.Enqueue(e.RawData);
            };

            _webSocket.Connect();
        }
        public void Setup()
        {
            if (setup)
            {
                return;
            }

            webSocket = new WebSocketSharp.WebSocket(url);

            webSocket.OnMessage += webSocket_OnMessage;
            webSocket.OnError   += webSocket_OnError;
            webSocket.OnClose   += webSocket_OnClose;

            webSocket.Connect();
        }
示例#32
0
        public void Connect()
        {
            _webSocket = new WebSocketSharp.WebSocket(_address);

            _webSocket.OnOpen += (o, e) => { if (OnOpen != null)
                                             {
                                                 OnOpen();
                                             }
            };
            _webSocket.OnMessage += (o, s) => { if (OnMessage != null)
                                                {
                                                    OnMessage(s);
                                                }
            };
            _webSocket.Connect();
        }
示例#33
0
        public async void LoginTipeee(string access_token, Action action)
        {
            try
            {
                using (WebClient wc = new WebClient())
                {
                    wc.Proxy = null;

                    var json = await wc.DownloadStringTaskAsync("https://api.tipeeestream.com/v1.0/events.json?apiKey=" + access_token + "&type[]=follow&limit=1");

                    JObject jobj     = JObject.Parse(json);
                    var     username = jobj["datas"]["items"][0]["user"].Value <string>("username");

                    var room = access_token;
                    var obj  = new { room = access_token, username = username };

                    using (var ws = new WebSocketSharp.WebSocket("https://sso.tipeeestream.com:4242"))
                    {
                        ws.OnMessage += (sender, e) =>
                                        Console.WriteLine("New message from controller: " + e.Data);

                        ws.Connect();
                        Console.ReadKey(true);
                    }

                    //socket = IO.Socket("https://sso.tipeeestream.com:4242");
                    //socket.On("connect", () =>
                    //{
                    //    socket.Emit("join-room", obj);

                    //    socket.On("join-room", () =>
                    //         {
                    //             socket.On("new-event", (data) => NewEventReceived(data));
                    //             action?.Invoke();
                    //         });
                    //});
                    //socket.Connect();

                    //var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    //socket.Connect("sso.tipeeestream.com", 4242);
                    //var username = jobj.Value<string>("username");
                }
            }
            catch
            {
            }
        }
示例#34
0
        public static void Main(string[] args)
        {
            var creditentialsFromRest = Helper.GetCreditentialsFromRestAPI();

            var jsonAuthToken = Helper.JsonfyWebAuthenticateUser(creditentialsFromRest.SessionToken);

            using (var ws = new WebSocketSharp.WebSocket($"wss://wss.b2bx.exchange/WSGateway/?session_token={creditentialsFromRest.SessionToken}"))
            {
                ws.OnError   += (sender, e) => Console.WriteLine("Incoming message: " + e.Exception + "||" + e.Message);
                ws.OnMessage += (sender, e) => Console.WriteLine("Incoming message: " + e.Data);

                //ws.OnOpen += (sender, e) => ws.Send();
                ws.Connect();
                ws.Send(jsonAuthToken);
            }
            Console.ReadKey(true);
        }
		public Task Connect(string host, CancellationToken cancelToken)
		{
			_webSocket = new WSSharpNWebSocket(host);
			_webSocket.EmitOnPing = false;
			_webSocket.EnableRedirection = true;
            _webSocket.Compression = WebSocketSharp.CompressionMethod.None;
            _webSocket.OnMessage += (s, e) => RaiseProcessMessage(e.Data);
			_webSocket.OnError += async (s, e) =>
			{
				_parent.RaiseOnLog(LogMessageSeverity.Error, $"Websocket Error: {e.Message}");
				await _parent.DisconnectInternal(e.Exception, skipAwait: true);
			};
			_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);
			};
			_webSocket.Log.Output = (e, m) => { }; //Dont let websocket-sharp print to console
            _webSocket.Connect();
			return TaskHelper.CompletedTask;
		}
		public void Benchmark()
		{
			var serializerSource = new Newtonsoft.Json.JsonSerializer();
			var serializer =new JsonCommonSerializer(serializerSource); // new ProtobufCommonSerializer();//

			var port = new Random().Next(6000, 60000);

			var listener = new WebSocketServer("ws://localhost:" + port);
			var serverTransport = listener.GenerateTransportSource("/p1");
			var serverRouter = new DefaultMessageRouter(serverTransport, serializer);
			serverRouter.AddService<ISumService>(new SumService());
			listener.Start();

			var client = new WebSocket("ws://localhost:" + port + "/p1");
			//client.Compression = WebSocketSharp.CompressionMethod.Deflate;
			var clientTransport = client.GenerateTransportSource();
			var clientRouter = new DefaultMessageRouter(clientTransport, serializer);
			var proxy = clientRouter.AddInterface<ISumService>();
			client.Connect();

			const int randCnt = 100;
			var rand = new Random(42);
			var randoms = new int[randCnt];
			for (int i = 0; i < randCnt; i++) randoms[i] = rand.Next(10000000, 20000000);
			var package = new SumPackage { Numbers = randoms };

			var sw = new Stopwatch();
			long timeFromClient = 0, timeToClient = 0;
			const int cnt = 1000;
			for (int j = 0; j < cnt; j++)
			{
				sw.Start();
				//var sum = proxy.Sum(randoms).Result;
				var sum = proxy.SumPackage(package).Result;
				sw.Stop();
				Assert.Equal(randoms.Sum(), sum);
				for (int i = 0; i < randCnt; i++) randoms[i] = rand.Next(10000000, 20000000);
				var times = proxy.TimeDiff(Stopwatch.GetTimestamp()).Result;
				timeFromClient += times.Item1;
				timeToClient += Stopwatch.GetTimestamp() - times.Item2;
			}

			_testOutputHelper.WriteLine("Completed {0} sum passes in {1}ms", cnt, sw.ElapsedMilliseconds);
			_testOutputHelper.WriteLine("Client to server latency: {0}us", timeFromClient / cnt / 10);
			_testOutputHelper.WriteLine("Server to client latency: {0}us", timeToClient / cnt / 10);

			sw.Reset();
			var tree = new SumServiceTree();
			SumServiceTree.FillTree(tree, rand, 2);
			_testOutputHelper.WriteLine("Starting large message transfer.");
			sw.Start();
			var result = proxy.Increment(tree).Result;
			sw.Stop();
			Assert.Equal(tree.Leaf + 1, result.Leaf);
			_testOutputHelper.WriteLine("Completed large transfer in {0}ms", sw.Elapsed.TotalMilliseconds);

			clientRouter.Dispose();
			clientTransport.Dispose();
			client.Close();

			serverRouter.Dispose();
			serverTransport.Dispose();
			listener.Stop();
		}
示例#37
0
		public void WebSocketSharpRoundTrip()
		{
			var serializer = new JsonCommonSerializer();

			var port = new Random().Next(20000, 60000);

			var server = WebApp.Start<Startup>("http://localhost:" + port + "/");

			var client = new WebSocketSharp.WebSocket("ws://localhost:" + port + "/rt1");
			var clientTransport = client.GenerateTransportSource();
			var clientRouter = new DefaultMessageRouter(clientTransport, serializer);
			var proxy = clientRouter.AddInterface<IMyService>();
			client.Connect();

			var result = proxy.Add(3, 4).Result;
			Assert.Equal(7, result);

			clientRouter.Dispose();
			clientTransport.Dispose();
			client.Close();

			server.Dispose();
		}