internal void ConnectIfNotOpen()
        {
            if (!IsConnected)
            {
                m_LastReceiveHeartbeatTime = 0;
                m_LastQueueingTime         = 0;
                m_LastShowQueueingNum      = 0;
                m_LastConnectTime          = TimeUtility.GetLocalMilliseconds();
                LogSystem.Debug("ConnectIfNotOpen at time:{0} ServerAddress:{1}", m_LastConnectTime, m_Url);

                WorldSystem.Instance.WaitMatchSceneId = -1;
                m_IsLogining = true;
                m_IsQueueing = false;
#if !PLATFORM_WEBGL
                m_WebSocket = new WebSocket4Net.WebSocket(m_Url);
#else
                m_WebSocket = WebSocketWrapper.Instance;
                m_WebSocket.SetUrl(m_Url);
#endif
                m_WebSocket.AllowUnstrustedCertificate = true;
                m_WebSocket.EnableAutoSendPing         = true;
                m_WebSocket.AutoSendPingInterval       = 10;
                m_WebSocket.Opened          += OnWsOpened;
                m_WebSocket.MessageReceived += OnWsMessageReceived;
                m_WebSocket.DataReceived    += OnWsDataReceived;
                m_WebSocket.Error           += OnWsError;
                m_WebSocket.Closed          += OnWsClosed;
                m_WebSocket.Open();
            }
        }
		public void WebSocket4NetRoundTrip()
		{
			var serializer = new JsonCommonSerializer();

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

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

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

			while (client.State != WebSocket4Net.WebSocketState.Open)
				Thread.Sleep(10);

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

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

			server.Dispose();
		}
Esempio n. 3
0
        private static void SimpleMessageTest()
        {
            var sweb = new WebSocket4Net.WebSocket("ws://localhost:8181/");

            sweb.Open();
            sweb.Closed          += (o, e) => Console.WriteLine("Closed.");
            sweb.Opened          += (o, e) => Console.WriteLine("Opened.");
            sweb.MessageReceived += (o, e) =>
            {
                Console.WriteLine(">>: " + e.Message);
            };
            sweb.Error += (o, e) => Console.WriteLine("ERR: " + e.Exception.Message);

            Console.WriteLine("Enter a command, or 'q' to quit.");
            var command = Console.ReadLine();

            while (command != "q")
            {
                if (command == "clear")
                {
                    Console.Clear();
                }
                else
                {
                    sweb.Send(command);
                }

                command = Console.ReadLine();
            }

            sweb.Close();
        }
        public void WebSocket4NetRoundTrip()
        {
            var serializer = new JsonCommonSerializer();

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

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

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

            client.Open();

            while (client.State != WebSocket4Net.WebSocketState.Open)
            {
                Thread.Sleep(10);
            }

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

            Assert.Equal(7, result);

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

            server.Dispose();
        }
Esempio n. 5
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string ip;
            string jogar;

            NavigationContext.QueryString.TryGetValue("ip", out ip);
            NavigationContext.QueryString.TryGetValue("jogar", out jogar);

            string conexao = string.Concat("ws://", ip, ":8080/TronWebsocket/tron");

            _mostrarCanvas = Convert.ToBoolean(jogar);
            if (!_mostrarCanvas)
            {
                ConfigurarVisualizacaoBotao(btnTop);
                ConfigurarVisualizacaoBotao(btnBottom);
                ConfigurarVisualizacaoBotao(btnLeft);
                ConfigurarVisualizacaoBotao(btnRight);
            }

            _websocket = new WebSocket4Net.WebSocket(conexao);

            //Caso queira implementar demais eventos
            //_websocket.Opened += websocket_Opened;
            //_websocket.Error += websocket_Error;
            //_websocket.Closed += websocket_Closed;

            _websocket.MessageReceived += websocket_MessageReceived;
            _websocket.Open();
        }
Esempio n. 6
0
 private void ConnectedButton_Click(object sender, RoutedEventArgs e)
 {
     Output("Starting Connected...");
     ConnectedButton.IsEnabled    = false;
     DisconnectedButton.IsEnabled = true;
     websocket = new WebSocket4Net.WebSocket(ServerAddressField.Text);
     WebsocketIn();
 }
Esempio n. 7
0
        /// <inheritdoc/>
        public override async Task <bool> ConnectAsync()
        {
            string msbWebsocketUrlWithPath = this.MsbUrl;

            if (this.UseSockJs)
            {
                if (!msbWebsocketUrlWithPath.EndsWith("/"))
                {
                    msbWebsocketUrlWithPath += "/";
                }

                msbWebsocketUrlWithPath += this.GenerateSockJSPath();
            }

            Log.Debug($"Connecting to address '{msbWebsocketUrlWithPath}'");

            this.webSocket = new WebSocket4Net.WebSocket(msbWebsocketUrlWithPath);

            // Security
            this.webSocket.Security.AllowCertificateChainErrors  = this.AllowSslCertificateChainErrors;
            this.webSocket.Security.AllowUnstrustedCertificate   = this.AllowSslUnstrustedCertificate;
            this.webSocket.Security.AllowNameMismatchCertificate = this.AllowSslCertificateNameMismatch;
            this.webSocket.Security.EnabledSslProtocols          = SslProtocols;

            // Connection
            this.webSocket.AutoSendPingInterval = this.HeatbeatIntervalInMilliseconds;
            this.webSocket.EnableAutoSendPing   = true;

            // Add listeners
            this.webSocket.MessageReceived += this.OnWebsocketMessageReceived;
            this.webSocket.Opened          += this.OnWebsocketOpend;
            this.webSocket.Error           += this.OnWebsocketError;
            this.webSocket.Closed          += this.OnWebsocketClosed;

            var connectTask = Task.Run(() =>
            {
                this.webSocket.Open();
                CancellationTokenSource source = new CancellationTokenSource();
                while (!this.IsConnected() && !source.IsCancellationRequested)
                {
                    Thread.Sleep(10);
                }
            });

            if (await Task.WhenAny(connectTask, Task.Delay(this.WaitForConnectedInMilliseconds, default(CancellationToken))) == connectTask)
            {
                await connectTask;
                return(true);
            }
            else
            {
                Log.Warn($"Connection try to '{this.MsbUrl}' timed out");
                this.ConnectionFailed?.Invoke(this, EventArgs.Empty);
                return(false);
            }
        }
Esempio n. 8
0
 // private constructor.
 private BitfinexWatchlistSocket()
 {
     comman    = new clsComman();
     webSocket = new WebSocket4Net.WebSocket(host);
     webSocket.Open();
     webSocket.Opened          += WebSocket_Opened;
     webSocket.Closed          += WebSocket_Closed;
     webSocket.Error           += WebSocket_Error;
     webSocket.MessageReceived += WebSocket_MessageReceived;
 }
Esempio n. 9
0
 public void Close()
 {
     if (this.socket != null)
     {
         Debug.Log("<color=magenta>[WS CLOSING]</color> " + this.url);
         this.sendCache = null;
         this.socket.Close();
         this.socket = null;
     }
 }
Esempio n. 10
0
        static void Main(string[] args)
        {
            a = new WebSocket4Net.WebSocket("ws://localhost:2668");
            a.MessageReceived += A_MessageReceived;
            a.Error += A_Error;
            a.Opened += A_Opened;
            a.Open();

            Console.ReadLine();
        }
Esempio n. 11
0
 public void Start()
 {
     //https://docs.gdax.com/#protocol-overview
     WebSocket4Net.WebSocket socket = new WebSocket4Net.WebSocket("wss://ws-feed.gdax.com");
     socket.Opened          += Socket_Opened;
     socket.MessageReceived += Socket_MessageReceived;
     socket.Open();
     socket.Closed += Socket_Closed;
     //socket.Send(Resource1.subscribe);
 }
Esempio n. 12
0
 public Task ConnectAsync(Uri uri, CancellationToken cancellationToken)
 {
     webSocket = new WebSocket4Net.WebSocket(uri.ToString())
     {
         AutoSendPingInterval = (int)KeepAliveInterval.TotalMilliseconds,
         EnableAutoSendPing   = true
     };
     webSocket.DataReceived    += WebSocket_OnData;
     webSocket.MessageReceived += WebSocket_OnMessage;
     webSocket.Open();
     return(Task.CompletedTask);
 }
Esempio n. 13
0
        private void WebSocket_Closed(object sender, EventArgs e)
        {
            webSocket.Dispose();
            //form.ObjTrading = new BindingList<FinexTicker>();
            webSocket = new WebSocket4Net.WebSocket(host);
            webSocket.Open();
            webSocket.Opened += WebSocket_Opened;
            webSocket.Closed += WebSocket_Closed;
            webSocket.Error  += WebSocket_Error;

            webSocket.MessageReceived += WebSocket_MessageReceived;
            ReInitallizeForm();
        }
Esempio n. 14
0
        /// <inheritdoc/>
        public override void Disconnect()
        {
            if (this.webSocket != null)
            {
                Log.Debug($"Disconnecting from {this.MsbUrl}");

                this.webSocket.Close("Normal");
                this.receivedIOConnected = false;
                this.webSocket           = null;
            }

            this.Disconnected?.Invoke(this, EventArgs.Empty);
        }
Esempio n. 15
0
 public void Close()
 {
     lock (syncRoot)
     {
         receiveQueue.Clear();
         if (socket != null)
         {
             try { socket.Close(); }
             catch { }
             socket = null;
         }
     }
 }
Esempio n. 16
0
        public Task ReceiveAsync()
        {
            _tcs = new TaskCompletionSource <object>();
            var cookies = new List <KeyValuePair <string, string> >();

            _ws = new WebSocket4Net.WebSocket(_url, "", cookies);
            _ws.MessageReceived += _ws_MessageReceived;
            //_ws.NoDelay = true;
            _ws.Opened += _ws_Opened;
            _ws.Error  += _ws_Error;
            _ws.Closed += _ws_Closed;
            _ws.Open();
            return(_tcs.Task);
        }
Esempio n. 17
0
        public JsonSocket(string url)
        {
            this.url        = url;
            this.socket     = new WebSocket4Net.WebSocket(url);
            this.Dispatcher = new MessageDispatcher <object>();
            this.Dispatcher.Register(this);

            Debug.Log("<color=magenta>[WS OPENING]</color> " + url);

            this.socket.Opened += (s, e) =>
            {
                Debug.Log("<color=magenta>[WS OPEN]</color> " + url);
                lock (sendCacheLock)
                {
                    if (this.sendCache != null)
                    {
                        foreach (var str in this.sendCache)
                        {
                            this.socket.Send(str);
                            Debug.Log("<color=green>[WS SEND CACHE]</color> " + str);
                        }
                        this.sendCache = null;
                    }
                }
            };

            this.socket.MessageReceived += (s, e) =>
            {
                Debug.Log("<color=cyan>[WS RECV]</color> " + e.Message);
                lock (receivedLock)
                {
                    received.Add(e.Message);
                }
            };

            this.socket.Error += (s, e) =>
            {
                Debug.LogError("<color=red>[WS ERROR]</color> " + url);
            };

            this.socket.Closed += (s, e) =>
            {
                Debug.Log("<color=magenta>[WS CLOSE]</color> " + url);
                this.socket = null;
            };

            this.m_dispatchCoroutine = Singleton.Instance.StartCoroutine(this.Dispatch());
            this.socket.Open();
        }
Esempio n. 18
0
 public void CreateSocketConnection(string serverURL)
 {
     try
     {
         webSocket                  = new WebSocket4Net.WebSocket(serverURL);
         webSocket.Error           += new EventHandler <SuperSocket.ClientEngine.ErrorEventArgs>(ConnectionError);
         webSocket.Opened          += new EventHandler(ConnectionOpened);
         webSocket.Closed          += new EventHandler(ConnectionClosed);
         webSocket.MessageReceived += new EventHandler <WebSocket4Net.MessageReceivedEventArgs>(websocket_MessageReceived);
         webSocket.Open();
     }
     catch (Exception ex)
     {
         Notify("Server Connection Problem: " + ex.Message);
     }
 }
 private void BuildWebSocket()
 {
     try {
         m_WebSocket = new WebSocket4Net.WebSocket(m_Url);
         m_WebSocket.AllowUnstrustedCertificate = true;
         m_WebSocket.EnableAutoSendPing         = false;
         m_WebSocket.AutoSendPingInterval       = 10;
         m_WebSocket.Opened          += OnWsOpened;
         m_WebSocket.MessageReceived += OnWsMessageReceived;
         m_WebSocket.DataReceived    += OnWsDataReceived;
         m_WebSocket.Error           += OnWsError;
         m_WebSocket.Log             += OnWsLog;
         m_WebSocket.Closed          += OnWsClosed;
     } catch (Exception ex) {
         LogSystem.Warn("Exception:{0}\n{1}", ex.Message, ex.StackTrace);
     }
 }
Esempio n. 20
0
        public void Dispose()
        {
            Lock(() => {
                this.retry = null;

                if (sock != null)
                {
                    sock.Close();
                    sock = null;
                }

                if (timer != null)
                {
                    timer.Dispose();
                    timer = null;
                }
            }, false);
        }
Esempio n. 21
0
        /// <summary>
        /// Makes this object and sets the Chrome remote debugging url
        /// </summary>
        /// <param name="remoteDebuggingUri"></param>
        internal Communicator(Uri remoteDebuggingUri)
        {
            var sessions = GetAvailableSessions(remoteDebuggingUri);

            if (sessions.Count == 0)
            {
                throw new Exception("Could not retrieve remote sessions from Chrome");
            }

            _webSocket        = new WebSocket(sessions[0].WebSocketDebuggerUrl.Replace("ws://localhost", "ws://127.0.0.1"));
            _webSocket.Error += WebSocketOnError;

            var waitEvent = new ManualResetEvent(false);

            _webSocket.Opened += (sender, args) => { waitEvent.Set(); };
            _webSocket.Open();
            waitEvent.WaitOne();
        }
Esempio n. 22
0
        public WebSocketClient(
            string uri,
            IConnectionProcessor processor,
            WebSocketCredential credential = null)
        {
            this.processor = processor;
            this.retry     = this.BeginRetry;

            var cookies = new List <KeyValuePair <string, string> >();

            if (credential != null)
            {
                var token = credential.ToString();
                if (token == null)
                {
                    throw new NullReferenceException("The credential must be a non-null string.");
                }
                cookies.Add(new KeyValuePair <string, string>(credential.Type, token));
            }

            this.sock = new WebSocket4Net.WebSocket(uri: uri, cookies: cookies);

            this.sock.Opened += (o, e) =>
            {
                this.EndRetry();
                this.processor.Opened();
            };

            this.sock.Closed += (o, e) =>
            {
                this.processor.Closed();
                Lock(() => this.retry());
            };

            this.sock.MessageReceived += (o, e) => this.processor.MessageReceived(e.Message);

            this.sock.Error += (o, e) =>
            {
                this.processor.Error(e.Exception);
                Lock(() => this.retry());
            };

            this.Open();
        }
Esempio n. 23
0
        private void InitWebSocket()
        {
            try
            {
                var uri = string.Format("ws://{0}:{1}/DataServer_Service", txtHost.Text, numPort.Value);
                _socket                  = new WebSocket4Net.WebSocket(uri);
                _socket.Opened          += _socket_Opened;
                _socket.Closed          += _socket_Closed;
                _socket.Error           += _socket_Error;
                _socket.MessageReceived += _socket_MessageReceived;

                AppendToLog("Connecting...");
                _socket.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void BasicRoundTrip()
        {
            var serializer = new JsonCommonSerializer();

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

            var options = new WebSocketListenerOptions();

            options.SubProtocols = new[] { "SignalR" };
            var listener = new WebSocketListener(new IPEndPoint(IPAddress.Loopback, port), options);
            var rfc6455  = new vtortola.WebSockets.Rfc6455.WebSocketFactoryRfc6455(listener);

            listener.Standards.RegisterStandard(rfc6455);
            var serverTransport = listener.GenerateTransportSource();
            var serverRouter    = new DefaultMessageRouter(serverTransport, serializer);

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

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

            client.Open();

            while (client.State != WebSocket4Net.WebSocketState.Open)
            {
                Thread.Sleep(10);
            }

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

            Assert.Equal(7, result);

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

            serverRouter.Dispose();
            serverTransport.Dispose();
            listener.Dispose();
        }
Esempio n. 25
0
        /// <summary>
        /// Initializes a Web Socket connection to taskt Server
        /// </summary>
        /// <param name="serverUri">URI to the socket server, ex. wss://ip:port/ws</param>
        public static void Connect(string serverUri)
        {
            try
            {
                //var fileName = "Server Connection Logs";
                //taskt.Core.Logging.Setup(fileName, log4net.Core.Level.Debug);
                //log = log4net.LogManager.GetLogger(fileName);

                //var fileName = "Server Connection Logs";
                //var logging = new taskt.Core.Logging();
                //log = logging.Setup(fileName, log4net.Core.Level.Debug);

                if (bypassCertificationValidation)
                {
                    Logging.log.Info("Client bypassing certificate validation");
                    //trust all certificates -- for self signed certificates, etc.
                    System.Net.ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
                }

                //reset connection exception
                connectionException = string.Empty;

                Logging.log.Info("Client Requesting To Connect to URI: " + serverUri);
                //handle if insecure or invalid connection is defined
                if (!serverUri.ToLower().StartsWith("wss://"))
                {
                    throw new InvalidSocketURI("Socket connections must begin with wss://");
                }

                //create socket connection
                webSocket                  = new WebSocket4Net.WebSocket(serverUri);
                webSocket.Error           += new EventHandler <SuperSocket.ClientEngine.ErrorEventArgs>(ConnectionError);
                webSocket.Opened          += new EventHandler(ConnectionOpened);
                webSocket.Closed          += new EventHandler(ConnectionClosed);
                webSocket.MessageReceived += new EventHandler <WebSocket4Net.MessageReceivedEventArgs>(MessageReceived);
                webSocket.Open();
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 26
0
 private bool InitClient()
 {
     try
     {
         url          = InputAddr.Text.ToString();
         socketClient = new WebSocket4Net.WebSocket(url);
         socketClient.DataReceived    += SocketClient_DataReceived;
         socketClient.MessageReceived += SocketClient_MessageReceived;;
         socketClient.Closed          += SocketClient_Closed;
         socketClient.Error           += SocketClient_Error;
         socketClient.Opened          += SocketClient_Opened;
         socketClient.Open();
         AppendInfo($">>正在连接[{url}],请等待...");
     }
     catch (Exception e)
     {
         MessageDialog.Show(this, "连接初始化异常:" + e.Message);
         return(false);
     }
     return(true);
 }
Esempio n. 27
0
        private void ConnectIfNotOpen()
        {
            if (!IsConnected)
            {
                m_IsLogged = false;
                m_LastReceiveHeartbeatTime = 0;
                m_LastConnectTime          = TimeUtility.GetLocalMilliseconds();
                LogSystem.Info("ConnectIfNotOpen at time {0}", m_LastConnectTime);

                m_WebSocket = new WebSocket4Net.WebSocket(m_Url);
                m_WebSocket.AllowUnstrustedCertificate = true;
                m_WebSocket.EnableAutoSendPing         = true;
                m_WebSocket.AutoSendPingInterval       = 10;
                m_WebSocket.Opened          += OnOpened;
                m_WebSocket.MessageReceived += OnMessageReceived;
                m_WebSocket.DataReceived    += OnDataReceived;
                m_WebSocket.Error           += OnError;
                m_WebSocket.Closed          += OnClosed;
                m_WebSocket.Open();
            }
        }
Esempio n. 28
0
        private void SetupClient(string prefix, string expectedResult)
        {
            string url = string.Format("{0}://{1}", prefix, Utility.SITE_URL);

            this.socket = new WebSocket4Net.WebSocket(url);

            this.socket.Closed += (sender, args) =>
            {
                this.logger.Object.Info("Socket Closed");
                this.clientResetEvent.Set();
            };

            this.socket.Opened += (sender, args) =>
            {
                this.logger.Object.Info("Socket Opened");
                this.clientResetEvent.Set();
            };

            this.socket.MessageReceived += (sender, args) =>
            {
                this.logger.Object.Info("Got Message");

                this.areEqual = string.Compare(expectedResult, args.Message, StringComparison.Ordinal) == 0;
                this.clientResetEvent.Set();
            };

            this.socket.DataReceived += (sender, args) =>
            {
                this.logger.Object.Info("Got Data");

                this.areEqual = string.Compare(expectedResult, Encoding.UTF8.GetString(args.Data), StringComparison.Ordinal) == 0;
                this.clientResetEvent.Set();
            };

            this.socket.Open();

            Assert.IsTrue(this.serverResetEvent.WaitOne(WaitOneTimeout), "Timeout waiting for server to accept connection"); // Wait for server to complete connection
            Assert.IsTrue(this.clientResetEvent.WaitOne(WaitOneTimeout), "Timeout waiting for client to open");              // Wait for client Open
        }
Esempio n. 29
0
        public Task ReceiveAsync()
        {
            var url = _url;

            _tcs = new TaskCompletionSource <object>();
            var cookies   = new List <KeyValuePair <string, string> >();
            var userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36";

            _ws = new WebSocket4Net.WebSocket(url, "", cookies, null, userAgent)
            {
                EnableAutoSendPing   = true,
                AutoSendPingInterval = 10 * 1000,
                ReceiveBufferSize    = 8192,
                NoDelay = true
            };
            _ws.MessageReceived += _ws_MessageReceived;
            _ws.Opened          += _ws_Opened;
            _ws.Error           += _ws_Error;
            _ws.Closed          += _ws_Closed;
            _ws.Open();
            return(_tcs.Task);
        }
Esempio n. 30
0
        static void Main(string[] args)
        {
            log4j.Info("Start Main");

            //WebSocket4Net.JsonWebSocket websocket = new WebSocket4Net.JsonWebSocket("ws://127.0.0.1:2012");
            WebSocket4Net.WebSocket websocket = new WebSocket4Net.WebSocket("ws://127.0.0.1:2012");

            websocket.Opened += new EventHandler((s, e) =>
            {
                log4j.Info("Opened");
            });
            websocket.Closed += new EventHandler((s, e) =>
            {
                log4j.Info("Closed");
            });
            websocket.MessageReceived += new EventHandler <WebSocket4Net.MessageReceivedEventArgs>((s, e) =>
            {
                log4j.Info("received from server: " + e.Message);
            });


            websocket.Open();
            log4j.Info(websocket.State);

            string cmd = "";

            while (cmd != "q")
            {
                //websocket.
                if (cmd != "")
                {
                    websocket.Send(cmd);
                }
                cmd = Console.ReadLine();
            }

            websocket.Close();
        }
Esempio n. 31
0
        internal void ConnectIfNotOpen()
        {
            if (!IsConnected)
            {
                m_LastReceiveHeartbeatTime = 0;
                m_LastQueueingTime         = 0;
                m_IsLogining      = true;
                m_IsQueueing      = false;
                m_LastConnectTime = TimeUtility.GetLocalMilliseconds();
                LogSystem.Info("ConnectIfNotOpen at time {0} {1} {2}", m_LastConnectTime, m_User, LobbyRobot.Robot.GetDateTime());

                m_WebSocket = new WebSocket4Net.WebSocket(m_Url);
                m_WebSocket.AllowUnstrustedCertificate = true;
                m_WebSocket.EnableAutoSendPing         = true;
                m_WebSocket.AutoSendPingInterval       = 10;
                m_WebSocket.Opened          += OnWsOpened;
                m_WebSocket.MessageReceived += OnWsMessageReceived;
                m_WebSocket.DataReceived    += OnWsDataReceived;
                m_WebSocket.Error           += OnWsError;
                m_WebSocket.Closed          += OnWsClosed;
                m_WebSocket.Open();
            }
        }
Esempio n. 32
0
        /// <summary>
        /// Initializes a Web Socket connection to taskt Server
        /// </summary>
        /// <param name="serverUri">URI to the socket server, ex. wss://ip:port/ws</param>
        public static void Connect(string serverUri)
        {
            try
            {
                if (bypassCertificationValidation)
                {
                    socketLogger.Information("Socket Client Bypasses SSL Validation");
                    //trust all certificates -- for self signed certificates, etc.
                    System.Net.ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
                }

                //reset connection exception
                connectionException = string.Empty;


                //handle if insecure or invalid connection is defined
                if (!serverUri.ToLower().StartsWith("wss://"))
                {
                    socketLogger.Information("Socket Client URI Invalid");
                    throw new InvalidSocketURI("Socket connections must begin with wss://");
                }

                //create socket connection
                webSocket                  = new WebSocket4Net.WebSocket(serverUri);
                webSocket.Error           += new EventHandler <SuperSocket.ClientEngine.ErrorEventArgs>(ConnectionError);
                webSocket.Opened          += new EventHandler(ConnectionOpened);
                webSocket.Closed          += new EventHandler(ConnectionClosed);
                webSocket.MessageReceived += new EventHandler <WebSocket4Net.MessageReceivedEventArgs>(MessageReceived);

                socketLogger.Information("Socket Client Opening Connection To: " + serverUri);
                webSocket.Open();
            }
            catch (Exception ex)
            {
                socketLogger.Information("Connection Error: " + ex.ToString());
            }
        }
		public void BasicRoundTrip()
		{
			var serializer = new JsonCommonSerializer();

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

			var options = new WebSocketListenerOptions();
			options.SubProtocols = new[] { "SignalR" };
			var listener = new WebSocketListener(new IPEndPoint(IPAddress.Loopback, port), options);
			var rfc6455 = new vtortola.WebSockets.Rfc6455.WebSocketFactoryRfc6455(listener);
			listener.Standards.RegisterStandard(rfc6455);
			var serverTransport = listener.GenerateTransportSource();
			var serverRouter = new DefaultMessageRouter(serverTransport, serializer);
			serverRouter.AddService<IMyService>(new MyService());
			listener.Start();

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

			while (client.State != WebSocket4Net.WebSocketState.Open)
				Thread.Sleep(10);

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

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

			serverRouter.Dispose();
			serverTransport.Dispose();
			listener.Dispose();
		}
Esempio n. 34
0
 /// <summary>
 /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
 /// </summary>
 public void Dispose()
 {
     if (_socket != null) _socket.Close();
     if (_socket != null) _socket = null;
     if (_config != null) _config = null;
 }
Esempio n. 35
0
 private static void InitNetWork()
 {
     var extension = new List<KeyValuePair<string, string>>();
     extension.Add(new KeyValuePair<string, string>("sec-websocket-extensions", "permessage-deflate; client_max_window_bits, x-webkit-deflate-frame"));
     mSocketClient = new WebSocket4Net.WebSocket("ws://127.0.0.1:8000/", subProtocol:"nodejs1", customHeaderItems:extension);
     mSocketClient.Opened += new EventHandler(websocket_Opened);
     mSocketClient.Error += new EventHandler<SuperSocket.ClientEngine.ErrorEventArgs>(websocket_Error);
     mSocketClient.Closed += new EventHandler(websocket_Closed);
     mSocketClient.MessageReceived += new EventHandler<WebSocket4Net.MessageReceivedEventArgs>(websocket_MessageReceived);
     mSocketClient.DataReceived += new EventHandler<WebSocket4Net.DataReceivedEventArgs>(websocket_DataReceived);
     mSocketClient.Open();
 }
        private void SetupClient(string prefix, string expectedResult)
        {
            string url = string.Format("{0}://{1}", prefix, Utility.SITE_URL);

            this.socket = new WebSocket4Net.WebSocket(url);

            this.socket.Closed += (sender, args) =>
            {
                this.logger.Object.Info("Socket Closed");
                this.clientResetEvent.Set();
            };

            this.socket.Opened += (sender, args) =>
            {
                this.logger.Object.Info("Socket Opened");
                this.clientResetEvent.Set();
            };

            this.socket.MessageReceived += (sender, args) =>
            {
                this.logger.Object.Info("Got Message");

                this.areEqual = string.Compare(expectedResult, args.Message, StringComparison.Ordinal) == 0;
                this.clientResetEvent.Set();
            };

            this.socket.DataReceived += (sender, args) =>
            {
                this.logger.Object.Info("Got Data");

                this.areEqual = string.Compare(expectedResult, Encoding.UTF8.GetString(args.Data), StringComparison.Ordinal) == 0;
                this.clientResetEvent.Set();
            };

            this.socket.Open();

            Assert.IsTrue(this.serverResetEvent.WaitOne(WaitOneTimeout), "Timeout waiting for server to accept connection"); // Wait for server to complete connection
            Assert.IsTrue(this.clientResetEvent.WaitOne(WaitOneTimeout), "Timeout waiting for client to open"); // Wait for client Open
        }
		public void Benchmark()
		{
			var serializer = new JsonCommonSerializer();

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

			var options = new WebSocketListenerOptions();
			options.SubProtocols = new[] { "SignalR" };
			var listener = new WebSocketListener(new IPEndPoint(IPAddress.Loopback, port), options);
			var rfc6455 = new vtortola.WebSockets.Rfc6455.WebSocketFactoryRfc6455(listener);
			listener.Standards.RegisterStandard(rfc6455);
			var serverTransport = listener.GenerateTransportSource();
			var serverRouter = new DefaultMessageRouter(serverTransport, serializer);
			serverRouter.AddService<ISumService>(new SumService());
			listener.Start();

			var client = new WebSocket("ws://localhost:" + port + "/", "SignalR", WebSocket4Net.WebSocketVersion.Rfc6455);
			var clientTransport = client.GenerateTransportSource();
			var clientRouter = new DefaultMessageRouter(clientTransport, serializer);
			var proxy = clientRouter.AddInterface<ISumService>();
			client.Open();

			while (client.State != WebSocket4Net.WebSocketState.Open)
				Thread.Sleep(10);

			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 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;
				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.Dispose();

			serverRouter.Dispose();
			serverTransport.Dispose();
			listener.Dispose();
		}
Esempio n. 38
0
 /// <summary>
 /// Open a real-time connection with the server
 /// </summary>
 public void Open()
 {
     _socket = new WebSocket4Net.WebSocket(_config.ToString());
     _socket.EnableAutoSendPing = true;
     _socket.AutoSendPingInterval = (1000 * 60); // 1 Minute
     _socket.Open();
 }
 private void BuildWebSocket()
 {
     try {
         m_WebSocket = new WebSocket4Net.WebSocket(m_Url);
         m_WebSocket.AllowUnstrustedCertificate = true;
         m_WebSocket.EnableAutoSendPing = false;
         m_WebSocket.AutoSendPingInterval = 10;
         m_WebSocket.Opened += OnWsOpened;
         m_WebSocket.MessageReceived += OnWsMessageReceived;
         m_WebSocket.DataReceived += OnWsDataReceived;
         m_WebSocket.Error += OnWsError;
         m_WebSocket.Log += OnWsLog;
         m_WebSocket.Closed += OnWsClosed;
     } catch (Exception ex) {
         LogSystem.Warn("Exception:{0}\n{1}", ex.Message, ex.StackTrace);
     }
 }