示例#1
0
        public async void Start()
        {
            var socketOptions = new PureWebSocketOptions()
            {
                DebugMode           = false,
                SendDelay           = 100,
                IgnoreCertErrors    = true,
                MyReconnectStrategy = new ReconnectStrategy(2000, 4000, 20)
            };

            ws = new PureWebSocket("ws://" + _url + "/websocket", socketOptions);
            ws.OnStateChanged += Ws_OnStateChanged;
            ws.OnMessage      += Ws_OnMessage;
            ws.OnClosed       += Ws_OnClosed;
            ws.OnSendFailed   += Ws_OnSendFailed;
            await ws.ConnectAsync();

            Console.WriteLine("SENDING WEBSOCKET MESSAGE");
            string[] s = new string[1];
            s[0] = "1";
            WebSocket.ConnectMsg c = new WebSocket.ConnectMsg()
            {
                msg     = "connect",
                version = "1",
                support = s
            };

            await ws.SendAsync(JsonConvert.SerializeObject(c));

            Console.ReadLine();
            ws.Dispose(true);

            await ws.ConnectAsync();
        }
示例#2
0
        public async Task Open()
        {
            try
            {
                if (_socket == null)
                {
                    Init();
                }
                if (_socket != null && _socket.State != WebSocketState.Aborted || _socket.State == WebSocketState.Closed)
                {
                    await _socket.ConnectAsync();
                }
                else
                {
                    if (_socket.State == WebSocketState.CloseReceived || _socket.State == WebSocketState.CloseSent)
                    {
                        await Task.Delay(20000);

                        await _socket.ConnectAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                _onError.Invoke(this, ex);
            }
        }
示例#3
0
        public static async Task Main(string[] args)
        {
            _timer = new Timer(OnTickAsync, null, 2000, 1);

RESTART:
            var socketOptions = new PureWebSocketOptions()
            {
                DebugMode           = true,
                SendDelay           = 100,
                IgnoreCertErrors    = true,
                MyReconnectStrategy = new ReconnectStrategy(3000, 6000)
            };

            _ws = new PureWebSocket("wss://demos.kaazing.com/echo", socketOptions);

            _ws.OnStateChanged += Ws_OnStateChanged;
            _ws.OnMessage      += Ws_OnMessage;
            _ws.OnClosed       += Ws_OnClosed;
            _ws.OnSendFailed   += Ws_OnSendFailed;
            try
            {
                await _ws.ConnectAsync();
            }
            catch (Exception e) {
                _ws.Dispose();
                goto RESTART;
            }


            Console.ReadLine();
            _ws.Dispose(true);
            goto RESTART;
        }
示例#4
0
        public static async Task Main(string[] args)
        {
            // this is just a timer to send data for us (simulate activity)
            _timer = new Timer(OnTickAsync, null, 4000, 1);

RESTART:
            var socketOptions = new PureWebSocketOptions
            {
                DebugMode           = false,                                // set this to true to see a ton O' logging
                SendDelay           = 100,                                  // the delay in ms between sending messages
                IgnoreCertErrors    = true,
                MyReconnectStrategy = new ReconnectStrategy(2000, 4000, 20) // automatic reconnect if connection is lost
            };

            _ws = new PureWebSocket("wss://demos.kaazing.com/echo", socketOptions, "MyOptionalInstanceName1");

            _ws.OnStateChanged += Ws_OnStateChanged;
            _ws.OnMessage      += Ws_OnMessage;
            _ws.OnClosed       += Ws_OnClosed;
            _ws.OnSendFailed   += Ws_OnSendFailed;
            await _ws.ConnectAsync();

            Console.ReadLine();
            _ws.Dispose(true);
            goto RESTART;
        }
        /// <summary>
        /// Connect the WebSocket and register all the events
        /// </summary>
        /// <returns>true if the connection was successful, false otherwise</returns>
        public async Task <bool> ConnectAndRegisterAsync()
        {
            logger.LogInformation("ConnectAndRegisterAsync() is working.");
            PureWebSocket pureWebSocket = new PureWebSocket(webSocketConfiguration.FullUrl, socketOptions);

            pureWebSocket.OnStateChanged += WSOnStateChanged;
            pureWebSocket.OnMessage      += WSOnMessage;
            pureWebSocket.OnOpened       += WSOnOpened;
            pureWebSocket.OnError        += WSOnError;
            logger.LogDebug("ConnectAndRegisterAsync() All custom events registered");
            return(await pureWebSocket.ConnectAsync());
        }
示例#6
0
 public Task <bool> ConnectAsync()
 {
     Log("Connect invoked.");
     try
     {
         return(_socket.ConnectAsync());
     }
     catch (Exception ex)
     {
         Log($"Connect thew an exception, {ex.Message}.");
         Socket_OnError(this, ex);
         throw;
     }
 }
示例#7
0
        public async Task Start()
        {
            _logger.Debug("Starting Hubitat Client");

            try
            {
                await _webSocket.ConnectAsync();
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Error starting WebSocket client");
                throw;
            }
        }
示例#8
0
        private async Task <bool> InitWs()
        {
            _ws = new PureWebSocket("wss://graphigostream.prd.dlive.tv", new PureWebSocketOptions
            {
                DebugMode    = false,
                SubProtocols = new[] { "graphql-ws" }
            });
            _ws.OnOpened += () =>
            {
                _ws.SendAsync("{\"type\":\"connection_init\",\"payload\":{}}\t").Wait();
                _ws.SendAsync("{\"id\":\"1\",\"type\":\"start\",\"payload\":{\"variables\":{\"streamer\":\"" + _blockchainName + "\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"916cddf76e8b906a0a39ed0d9ecb2e3b603733cd91ea69235da267084f63f8ad\"}},\"operationName\":\"StreamMessageSubscription\",\"query\":\"subscription StreamMessageSubscription($streamer: String!) {\\n streamMessageReceived(streamer: $streamer) {\\n type\\n ... on ChatGift {\\n id\\n gift\\n amount\\n recentCount\\n expireDuration\\n ...VStreamChatSenderInfoFrag\\n __typename\\n }\\n ... on ChatHost {\\n id\\n viewer\\n ...VStreamChatSenderInfoFrag\\n __typename\\n }\\n ... on ChatSubscription {\\n id\\n month\\n ...VStreamChatSenderInfoFrag\\n __typename\\n }\\n ... on ChatChangeMode {\\n mode\\n __typename\\n }\\n ... on ChatText {\\n id\\n content\\n ...VStreamChatSenderInfoFrag\\n __typename\\n }\\n ... on ChatFollow {\\n id\\n ...VStreamChatSenderInfoFrag\\n __typename\\n }\\n ... on ChatDelete {\\n ids\\n __typename\\n }\\n ... on ChatBan {\\n id\\n ...VStreamChatSenderInfoFrag\\n __typename\\n }\\n ... on ChatModerator {\\n id\\n ...VStreamChatSenderInfoFrag\\n add\\n __typename\\n }\\n ... on ChatEmoteAdd {\\n id\\n ...VStreamChatSenderInfoFrag\\n emote\\n __typename\\n }\\n ... on ChatTimeout {\\n id\\n ...VStreamChatSenderInfoFrag\\n minute\\n __typename\\n }\\n ... on ChatTCValueAdd {\\n id\\n ...VStreamChatSenderInfoFrag\\n amount\\n totalAmount\\n __typename\\n }\\n __typename\\n }\\n}\\n\\nfragment VStreamChatSenderInfoFrag on SenderInfo {\\n subscribing\\n role\\n roomRole\\n sender {\\n id\\n username\\n displayname\\n avatar\\n partnerStatus\\n badges\\n __typename\\n }\\n __typename\\n}\\n\"}}")
                .Wait();
            };
            _ws.OnMessage += OnWebsocketMessage;
            _ws.OnClosed  += reason => { Events.FireOnDisconnect(); };

            return(_ws.ConnectAsync().Result);
        }
示例#9
0
        public static async Task Connect(String chaveServicos, String codMotorista)
        {
            // _timer = new Timer(OnTickAsync, null, 2000, 1);

            if (_ws != null && _ws.State == WebSocketState.Open)
            {
                return;
            }

            //Verifico se servidor está disponível
            var client = new HttpClient
            {
                Timeout     = TimeSpan.FromMilliseconds(8000),
                BaseAddress = new Uri("http://" + ViewModelBase.GetUrlBase() + "/motorapido/wes/")
            };

            client.DefaultRequestHeaders.Add("Authentication", chaveServicos);
            try
            {
                var response = await client.GetAsync("motorista/ping");


                Tuple <String, String>         tupla = new Tuple <string, string>("Authentication", chaveServicos);
                List <Tuple <String, String> > lista = new List <Tuple <String, String> >();
                lista.Add(tupla);
                tupla = new Tuple <string, string>("CodMotorista", codMotorista);
                lista.Add(tupla);
                IEnumerable <Tuple <String, String> > en = lista;

                var socketOptions = new PureWebSocketOptions()
                {
                    DebugMode           = true,
                    SendDelay           = 100,
                    IgnoreCertErrors    = true,
                    MyReconnectStrategy = new ReconnectStrategy(2000, 4000, 20),
                    Headers             = en
                };

                _ws = new PureWebSocket("ws://" + ViewModelBase.GetUrlBase() + "/motorapido/socket", socketOptions);

                _ws.OnStateChanged += Ws_OnStateChanged;
                _ws.OnMessage      += Ws_OnMessage;
                _ws.OnClosed       += Ws_OnClosed;
                _ws.OnSendFailed   += Ws_OnSendFailed;
                var res = await _ws.ConnectAsync();

                Console.ReadLine();
                CrossSettings.Current.Remove("ServidorFora");
                BackgroundAggregatorService.StopBackgroundService();
            }
            catch (Exception e)
            {
                Crashes.TrackError(e);
                if (!CrossSettings.Current.Contains("ServidorFora"))
                {
                    CrossSettings.Current.Set("ServidorFora", true);
                    MessagingCenter.Send(new MensagemRespostaSocket()
                    {
                        msg = "Servidor indisponível!"
                    }, "ErroPosicaoArea");
                    BackgroundAggregatorService.Add(() => new ChecagemServidorDisponivel());
                    BackgroundAggregatorService.StartBackgroundService();
                }
            }
        }