public static async Task Emit(SocketData socketData)
 {
     if (_client?.Connected == true)
     {
         _client.SendAsync(JsonConvert.SerializeObject(socketData));
     }
 }
Esempio n. 2
0
        public void Subscribe(int topicID, object[] data)
        {
            SubscriptionRequest sr = new SubscriptionRequest(topicID, data);

            byte[] srb = Helper.ObjectToByteArray(sr);
            LinkClient.SendAsync(srb);
        }
Esempio n. 3
0
        public Response Exchange(Request request)
        {
            DateTime startWaitTime = DateTime.Now;

            responseToWaitFor = new Response
            {
                Header = new ResponseHeader()
                {
                    MessageNumber = request.Header.MessageNumber
                }
            };

            client.SendAsync(converter.ConvertStringToBytes(converter.ConvertObjectToJson(request)));

            while (responseToWaitFor.Header.Targets is null)
            {
                if (DateTime.Now > startWaitTime.AddSeconds(15))
                {
                    responsesToIgnore.Add(responseToWaitFor.Header.MessageNumber);
                    responseToWaitFor = null;
                    throw new Exception("Request timed out");
                }
                Thread.Sleep(100);
            }

            if (responseToWaitFor.Header.Code == ResponseCode.UnplannedError)
            {
                throw new Exception(responseToWaitFor.Header.Message);
            }

            return(responseToWaitFor);
        }
        static void ProcessOutput(string outputMessage)
        {
            if (DEBUG)
            {
                Console.Error.WriteLine("Outgoing message: " + outputMessage);
            }

            if (outputMessage.Split(",")[0] == "cartload")
            {
                inputQueue.Enqueue(initMessage);
                outputMessage = "disconnect,1,-2," + initMessage.Split(",")[3];
            }

            connection.SendAsync(Encoding.UTF8.GetBytes(outputMessage));
        }
Esempio n. 5
0
 static bool ClientTask()
 {
     try
     {
         WatsonWsClient client = new WatsonWsClient("localhost", 9000, false);
         client.Start();
         Task.Delay(1000).Wait();
         return(client.SendAsync("Hello").Result);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.ToString());
         return(false);
     }
 }
Esempio n. 6
0
        static void Main(string[] args)
        {
            using (WatsonWsServer wss = new WatsonWsServer(_Hostname, _Port, false))
            {
                wss.ClientConnected    += (s, e) => Console.WriteLine("Client connected: " + e.IpPort);
                wss.ClientDisconnected += (s, e) => Console.WriteLine("Client disconnected: " + e.IpPort);
                wss.MessageReceived    += (s, e) =>
                {
                    Console.WriteLine("Server message received from " + e.IpPort + ": " + Encoding.UTF8.GetString(e.Data));
                    _ClientIpPort = e.IpPort;
                };

                wss.Start();

                Thread.Sleep(2500);

                using (WatsonWsClient wsc = new WatsonWsClient(_Hostname, _Port, false))
                {
                    wsc.ServerConnected    += (s, e) => Console.WriteLine("Client connected to server");
                    wsc.ServerDisconnected += (s, e) => Console.WriteLine("Client disconnected from server");
                    wsc.MessageReceived    += (s, e) => Console.WriteLine("Client received message from server: " + Encoding.UTF8.GetString(e.Data));
                    wsc.Start();

                    Thread.Sleep(2500);

                    Console.WriteLine("Sending message from client to server...");
                    wsc.SendAsync("Hello from client").Wait();

                    Thread.Sleep(2500);

                    Console.WriteLine("Sending message from server to client...");
                    wss.SendAsync(_ClientIpPort, "Hello from server").Wait();

                    Console.WriteLine("Press ENTER to exit");
                    Console.ReadLine();
                }
            }
        }
Esempio n. 7
0
        static void ClientTask()
        {
            Statistics stats = new Statistics();

            using (WatsonWsClient client = new WatsonWsClient(hostname, port, false))
            {
                #region Start-Client

                client.ServerConnected += (s, e) =>
                {
                    Console.WriteLine("Client detected connection to " + hostname + ":" + port);
                };

                client.ServerDisconnected += (s, e) =>
                {
                    Console.WriteLine("Client disconnected from " + hostname + ":" + port);
                };

                client.MessageReceived += (s, e) =>
                {
                    stats.AddRecv(e.Data.Length);
                };

                // client.Logger = Logger;
                client.Start();

                #endregion

                #region Wait-for-Server-Ready

                while (!serverReady)
                {
                    Console.WriteLine("Client waiting for server...");
                    Task.Delay(2500).Wait();
                }

                Console.WriteLine("Client detected server ready!");

                #endregion

                #region Send-Messages-to-Server

                for (int i = 0; i < messagesPerClient; i++)
                {
                    Task.Delay(sendDelay).Wait();
                    client.SendAsync(msgData).Wait();
                    stats.AddSent(msgData.Length);
                }

                #endregion

                #region Wait-for-Server-Messages

                while (stats.MsgRecv < messagesPerClient)
                {
                    Task.Delay(1000).Wait();
                }

                Console.WriteLine("Client exiting: " + stats.ToString());
                lock (clientStatsLock)
                {
                    clientStats.Add(stats);
                }

                #endregion
            }
        }
Esempio n. 8
0
 public void Send()
 {
     _client.SendAsync(Encoding.UTF8.GetBytes("test"));
 }
Esempio n. 9
0
        static void Main(string[] args)
        {
            _ServerIp   = InputString("Server IP:", "localhost", true);
            _ServerPort = InputInteger("Server port:", 9000, true, true);
            _Ssl        = InputBoolean("Use SSL:", false);

            InitializeClient();

            bool runForever = true;

            while (runForever)
            {
                Console.Write("Command [? for help]: ");
                string userInput = Console.ReadLine();
                if (String.IsNullOrEmpty(userInput))
                {
                    continue;
                }

                switch (userInput)
                {
                case "?":
                    Console.WriteLine("Available commands:");
                    Console.WriteLine("  ?            help (this menu)");
                    Console.WriteLine("  q            quit");
                    Console.WriteLine("  cls          clear screen");
                    Console.WriteLine("  send text    send text to the server");
                    Console.WriteLine("  send bytes   send binary data to the server");
                    Console.WriteLine("  stats        display client statistics");
                    Console.WriteLine("  status       show if client connected");
                    Console.WriteLine("  dispose      dispose of the connection");
                    Console.WriteLine("  connect      connect to the server if not connected");
                    Console.WriteLine("  reconnect    disconnect if connected, then reconnect");
                    Console.WriteLine("  close        close the connection");
                    break;

                case "q":
                    runForever = false;
                    break;

                case "cls":
                    Console.Clear();
                    break;

                case "send text":
                    Console.Write("Data: ");
                    userInput = Console.ReadLine();
                    if (String.IsNullOrEmpty(userInput))
                    {
                        break;
                    }
                    if (!_Client.SendAsync(userInput).Result)
                    {
                        Console.WriteLine("Failed");
                    }
                    else
                    {
                        Console.WriteLine("Success");
                    }
                    break;

                case "send bytes":
                    Console.Write("Data: ");
                    userInput = Console.ReadLine();
                    if (String.IsNullOrEmpty(userInput))
                    {
                        break;
                    }
                    if (!_Client.SendAsync(Encoding.UTF8.GetBytes(userInput)).Result)
                    {
                        Console.WriteLine("Failed");
                    }
                    break;

                case "stats":
                    Console.WriteLine(_Client.Stats.ToString());
                    break;

                case "status":
                    if (_Client == null)
                    {
                        Console.WriteLine("Connected: False (null)");
                    }
                    else
                    {
                        Console.WriteLine("Connected: " + _Client.Connected);
                    }
                    break;

                case "dispose":
                    _Client.Dispose();
                    break;

                case "connect":
                    if (_Client != null && _Client.Connected)
                    {
                        Console.WriteLine("Already connected");
                    }
                    else
                    {
                        InitializeClient();
                    }
                    break;

                case "reconnect":
                    InitializeClient();
                    break;

                case "close":
                    _Client.Stop();
                    break;

                default:
                    break;
                }
            }
        }
Esempio n. 10
0
        public static async Task <string> SetupNexusLogin(Action <string> updateStatus)
        {
            // open a web socket to receive the api key
            var            guid    = Guid.NewGuid();
            WatsonWsClient client  = new WatsonWsClient(new Uri("wss://sso.nexusmods.com"));
            string         api_key = null;
            object         lockobj = new object();
            object         serverConnectedLockObj = new object();

            client.ServerConnected    += ServerConnected;
            client.ServerDisconnected += ServerDisconnected;
            client.MessageReceived    += MessageReceived;
            client.Start();

            void MessageReceived(object sender, MessageReceivedEventArgs args)
            {
                Debug.WriteLine("Message from server: " + Encoding.UTF8.GetString(args.Data));
                api_key = Encoding.UTF8.GetString(args.Data);
                lock (lockobj)
                {
                    Monitor.Pulse(lockobj);
                }
                //client.
            }

            void ServerConnected(object sender, EventArgs args)
            {
                Debug.WriteLine("Server connected");
                lock (serverConnectedLockObj)
                {
                    Monitor.Pulse(serverConnectedLockObj);
                }
            }

            void ServerDisconnected(object sender, EventArgs args)
            {
                Debug.WriteLine("Server disconnected");
            }

            //await Task.Delay(1000, cancel);
            lock (serverConnectedLockObj)
            {
                Monitor.Wait(serverConnectedLockObj, new TimeSpan(0, 0, 0, 15));
            }

            if (client.Connected)
            {
                await client.SendAsync(
                    Encoding.UTF8.GetBytes("{\"id\": \"" + guid + "\", \"appid\": \"me3tweaks\"}")); //do not localize

                Thread.Sleep(1000);                                                                  //??
                Utilities.OpenWebpage($"https://www.nexusmods.com/sso?id={guid}&application=me3tweaks");
                lock (lockobj)
                {
                    Monitor.Wait(lockobj, new TimeSpan(0, 0, 1, 0));
                }
                client.Dispose();
            }

            return(api_key);
        }
Esempio n. 11
0
        static async void ClientTask()
        {
            string header = "[Client] ";

            using (WatsonWsClient client = new WatsonWsClient(hostname, port, false))
            {
                #region Start-Client

                client.ServerConnected += (s, e) =>
                {
                    Console.WriteLine(header + "connected to " + hostname + ":" + port);
                };

                client.ServerDisconnected += (s, e) =>
                {
                    Console.WriteLine(header + "disconnected from " + hostname + ":" + port);
                };

                client.MessageReceived += (s, e) =>
                {
                    clientStats.AddRecv(e.Data.Count);
                };

                client.Logger = Logger;
                client.Start();
                Console.WriteLine(header + "started");

                #endregion

                #region Wait-for-Messages

                while (clientStats.MsgRecv < serverSendMessageCount)
                {
                    Task.Delay(1000).Wait();
                    Console.WriteLine(header + "waiting for server messages");
                }
                ;

                Console.WriteLine(header + "server messages received");
                #endregion

                #region Send-Messages

                Console.WriteLine(header + "sending messages to server");

                for (int i = 0; i < clientSendMessageCount; i++)
                {
                    byte[] msgData = Encoding.UTF8.GetBytes(RandomString(clientMessageLength));
                    await client.SendAsync(msgData);

                    clientStats.AddSent(msgData.Length);
                }

                while (clientStats.MsgRecv < (clientSendMessageCount + serverSendMessageCount))
                {
                    Console.WriteLine(header + "waiting for server echo messages");
                    Task.Delay(1000).Wait();
                }

                Console.WriteLine(header + "finished");
                clientIpPort = null;

                #endregion
            }
        }
Esempio n. 12
0
        static void Main(string[] args)
        {
            Console.Write("Server IP        : ");
            serverIp = Console.ReadLine();

            Console.Write("Server Port      : ");
            serverPort = Convert.ToInt32(Console.ReadLine());

            Console.Write("SSL (true/false) : ");
            ssl = Convert.ToBoolean(Console.ReadLine());

            WatsonWsClient client = new WatsonWsClient(serverIp, serverPort, ssl, true, ServerConnected, ServerDisconnected, MessageReceived, true);

            bool runForever = true;

            while (runForever)
            {
                Console.Write("Command [? for help]: ");
                string userInput = Console.ReadLine();
                if (String.IsNullOrEmpty(userInput))
                {
                    continue;
                }

                switch (userInput)
                {
                case "?":
                    Console.WriteLine("Available commands:");
                    Console.WriteLine("  ?          help (this menu)");
                    Console.WriteLine("  q          quit");
                    Console.WriteLine("  cls        clear screen");
                    Console.WriteLine("  send       send message to server");
                    Console.WriteLine("  status     show if client connected");
                    Console.WriteLine("  dispose    dispose of the connection");
                    Console.WriteLine("  connect    connect to the server if not connected");
                    Console.WriteLine("  reconnect  disconnect if connected, then reconnect");
                    break;

                case "q":
                    runForever = false;
                    break;

                case "cls":
                    Console.Clear();
                    break;

                case "send":
                    Console.Write("Data: ");
                    userInput = Console.ReadLine();
                    if (String.IsNullOrEmpty(userInput))
                    {
                        break;
                    }
                    client.SendAsync(Encoding.UTF8.GetBytes(userInput));
                    break;

                case "status":
                    if (client == null)
                    {
                        Console.WriteLine("Connected: False (null)");
                    }
                    else
                    {
                        Console.WriteLine("Connected: " + client.IsConnected());
                    }
                    break;

                case "dispose":
                    client.Dispose();
                    break;

                case "connect":
                    if (client != null && client.IsConnected())
                    {
                        Console.WriteLine("Already connected");
                    }
                    else
                    {
                        client = new WatsonWsClient(serverIp, serverPort, ssl, true, ServerConnected, ServerDisconnected, MessageReceived, true);
                    }
                    break;

                case "reconnect":
                    if (client != null)
                    {
                        client.Dispose();
                    }
                    client = new WatsonWsClient(serverIp, serverPort, ssl, true, ServerConnected, ServerDisconnected, MessageReceived, true);
                    break;

                default:
                    break;
                }
            }
        }
Esempio n. 13
0
 private async Task Send(LiveP2000PacketType cmd, JObject data)
 {
     data["COM"] = (int)cmd;
     await _client.SendAsync(JsonConvert.SerializeObject(data));
 }