示例#1
1
        static void Main(string[] args)
        {
            if( args.Length == 0)
            {
                Console.WriteLine("specify config as argument.");
                Console.ReadKey();
                return;
            }

            UploaderConfig config = new UploaderConfig(args[0]);

            XSocketClient client = new XSocketClient(config.Url, "*");

            client.OnOpen += client_OnOpen;
            client.OnError += client_OnError;
            client.OnClose += client_OnClose;
            client.OnMessage += client_OnMessage;
            
            client.Open();

            //z nejakeho dovdotu nedostanu udalost OnOpen, ale nemohu hned posilat, pripojeni chviku trva
            Thread.Sleep(1000);

            Notifier notifier = new Notifier(config, client);
            notifier.RunAsync();

            Console.WriteLine("Press any key to close...");
            Console.ReadKey();
        }
示例#2
0
        static void Main(string[] args)
        {
            var conn = new XSocketClient("ws://localhost:4502","http://localhost","IoT");

            conn.Controller("IoT").OnOpen += (sender, connectArgs) => Console.WriteLine("IoT Controller Connected");
            
            conn.Open();

            //Set client type
            conn.Controller("IoT").SetEnum("ClientType","Native");

            //Listen for messages from the Netduino
            conn.Controller("IoT").On<ChatMessage>("chatmessage", message => Console.WriteLine(message.Text));

            Console.WriteLine("Listening for messages from the Netduino, hit enter to quit");
            Console.ReadLine();
        }
示例#3
0
        static void Main(string[] args)
        {
            //Connect to the XSockets instance hosted in Owin
            var c = new XSocketClient("ws://localhost:12345", "http://localhost", "stock");

            c.OnConnected += (sender, eventArgs) => Console.WriteLine("CONNECTED");

            c.Open();

            //Set the 'mystocks' property on the controller to 'MSFT' and 'XNET'
            c.Controller("stock").SetProperty("MyStocks", new List<string>() { "MSFT", "XNET" });

            //Listen for 'tick', but we use dynamic since we have no reference to the class Stock
            c.Controller("stock").On<Stock>("tick", s =>
            {
                Console.WriteLine("{0}:{1}",s.Symbol, s.Price);
            });                       
            
            Console.ReadLine();
        }
示例#4
0
        static void Main(string[] args)
        {
            //Wait for server to start
            Task.Delay(10000).Wait();

            var connection = new XSocketClient("ws://localhost:4502", "http://localhost", "Notification");
            IController controller = connection.Controller("Notification");

            connection.OnConnected += (sender, eventArgs) => Console.WriteLine("Connected to host");
            connection.Open();

            controller.OnOpen += (sender, eventArgs) => Console.WriteLine("Ready to send messages!");
            controller.OnError += (sender, errorArgs) => Console.WriteLine("An error occured: " + errorArgs.Exception);
            string message = null;
            while (message != "q")
            {
                message = Console.ReadLine();
                controller.Invoke("sendmessage", message);
            }
        }
示例#5
0
        static void Main(string[] args)
        {
            using (var container = XSockets.Plugin.Framework.Composable.GetExport<IXSocketServerContainer>())
            {
                //Start a server
                container.Start();

                
                Console.WriteLine("Hit enter to start a client that will show Serilog.Sinks.XSockets");
                Console.ReadLine();

                //Start a client and hook up only to the log controller...
                var client = new XSocketClient("ws://localhost:4502","http://localhost","log");

                client.Open();
                
                client.Controller("log").On<LogEventWrapper>("logEvent", logEvent =>
                {
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("Message: {0}",logEvent.RenderedMessage);
                    Console.ResetColor();
                });

                //Change the LogEventLevel the client listens to every 8 seconds
                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        var newLevel = ((LogEventLevel)new Random().Next(0, 5)).ToString();
                        client.Controller("log").SetEnum("LogEventLevel", newLevel);
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("New LogEventLevel set to {0}", newLevel);
                        Console.ResetColor();
                        Thread.Sleep(8000);                        
                    }
                });
                
                Console.WriteLine("Hit enter to quit");
                Console.ReadLine();
            }
        }
示例#6
0
        void Upload(string fullpath)
        {
            string source = fullpath.ToLower();
            string target = _config.Items
                .Where(item => item.SourceFileName == source)
                .Select(item => item.TargetFileName)
                .First();

            try
            {
                BinaryData data = null;

                //mutex, ktery pouziva piskvorkna ukladani psq
                using (Mutex mutex = new Mutex(false, @"Global\" + source.ToLower().Replace('\\', ':')))
                {
                    if (mutex.WaitOne(500, false))
                    {
                        data = new BinaryData(source);
                    }
                    else
                    {
                        Trace.WriteLine("Mutex timeout to  " + source);
                        return;
                    }
                }

                Trace.WriteLine("Sending " + source + " as " + target);
                _client.Send(target);

                _client.Send(data);
            }
            catch (IOException ex)
            {
                Trace.WriteLine(DateTime.Now + " reading file failed");

                Trace.WriteLine(ex.Message);
            }
            catch (Exception)
            {
                Trace.WriteLine(DateTime.Now + " sending file failed");

                try
                {
                    _client = new XSocketClient(_config.Url, "*");
                    Thread.Sleep(1000);
                    _client.Open();
                }
                catch
                {
                    Trace.WriteLine("reconnect failed");
                    return;
                }
            }
        }
示例#7
0
 public Notifier(UploaderConfig config, XSocketClient client)
 {
     _config = config;
     _client = client;
 }
        private void publishbutton_Click(object sender, EventArgs e)
        {
            _timer = new System.Timers.Timer(5000);
            client = new XSocketClient("ws://127.0.0.1:4503/MyController", "*");
            client.Bind("foo2", OnFoo);
            if(client.IsConnected == false)
            {
                _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
                _timer.Enabled = true;
            }

            server = XSockets.Plugin.Framework.Composable.GetExport<IXSocketServerContainer>();

            server.OnServerClientConnection += SocketOnOnOpen;
            server.StartServers();
            XSocketJsonSerializer json = new XSocketJsonSerializer();

            Random r = new Random();
            EquityPrice ep = new EquityPrice();
            ep.open = 14;
            ep.high = 356;
            ep.low = 257;
            ep.close = 23;
            //Console.WriteLine("Started, hit enter to quit");
            //Console.ReadLine();
            while(true)
            {
                ep.code = "0005.HK";
                ep.open = ep.open + Convert.ToDecimal(Math.Round(r.NextDouble(), 2));
                ep.high = ep.high + Convert.ToDecimal(Math.Round(r.NextDouble(), 2));
                ep.low = ep.low + Convert.ToDecimal(Math.Round(r.NextDouble(), 2));
                ep.close = ep.close + Convert.ToDecimal(Math.Round(r.NextDouble(), 2));

                SendEventMessageToAllClients(json.SerializeToString(ep));
                //SendEventMessageToAllClients("hello "+i.ToString());
                //Thread.Sleep(2000);
            }
            server.StopServers();
            //.Send(new { SomeString = "Demo", SomeNumber = 123 }, "foo");
        }
示例#9
0
        private static void SetupClient()
        {
            client = new XSocketClient(server, "*");
            client.OnOpen += (sender, args) =>
            {
                notifier.Notify(NotificationType.Success, hasConnected ? "Reconnected" : "Connected", hasConnected ? "Connection to the server has been reestablished" : "Client has been connected to the server.");
                hasConnected = true;
                SendInit();
            };

            client.Bind("commands", e =>
            {
                log.Debug("server: " + e.data);
                JObject msg = JObject.Parse(e.data);
                switch (msg["msg"].Value<string>())
                {
                    case Shutdown.Msg:
                        log.Debug("Shutting down due to server request. Client not up to date.");
                        notifier.Notify(NotificationType.Info, "Outdated version", "Updating to new version...");
                        updateClient();
                        shutDown = true;
                        return;
                    case ClientCommon.Methods.Uninstall.Msg:
                        log.Debug("Uninstalling due to server request...");
                        Uninstall();
                        shutDown = true;
                        return;
                    case ClientCommon.Methods.InstallMod.Msg:
                        SendPing(ClientCommon.Methods.InstallMod.Msg);
                        ThreadPool.QueueUserWorkItem(InstallMod, msg.ToObject<InstallMod>());
                        break;
                    case ClientCommon.Methods.DeleteMod.Msg:
                        ThreadPool.QueueUserWorkItem(DeleteMod, msg.ToObject<DeleteMod>());
                        break;
                    case ClientCommon.Methods.SetMod.Msg:
                        SendPing(ClientCommon.Methods.SetMod.Msg);
                        ThreadPool.QueueUserWorkItem(SetMod, msg.ToObject<SetMod>());
                        break;
                    case ClientCommon.Methods.ConnectDota.Msg:
                        SendPing(ClientCommon.Methods.ConnectDota.Msg);
                        ThreadPool.QueueUserWorkItem(ConnectDota, msg.ToObject<ConnectDota>());
                        break;
                    case ClientCommon.Methods.LaunchDota.Msg:
#if !DEBUG
                        ThreadPool.QueueUserWorkItem(LaunchDota, msg.ToObject<LaunchDota>());
#endif
                        break;
                    case ClientCommon.Methods.ConnectDotaSpectate.Msg:
                        ThreadPool.QueueUserWorkItem(SpectateGame,
                            msg.ToObject<ConnectDotaSpectate>());
                        break;
                    case ClientCommon.Methods.NotifyMessage.Msg:
                        ThreadPool.QueueUserWorkItem(NotifyMessage, msg.ToObject<NotifyMessage>());
                        break;
                    case ClientCommon.Methods.UpdateMods.Msg:
                        ThreadPool.QueueUserWorkItem(UpdateMods, msg.ToObject<UpdateMods>());
                        break;
                    default:
                        log.Error("Command not recognized.");
                        break;
                }
            });

            client.OnError += (sender, args) => log.Error(string.Format("Controller [{0}] sent us error [{1}] on event [{2}].", args.controller, args.data, args.@event));

            client.OnClose += (sender, args) =>
            {
                log.Info("Disconnected from the server.");
                HandleClose();
            };
        }
示例#10
0
        private static void SetupClient()
        {
            client = new XSocketClient(server, "*");
            client.OnOpen += (sender, args) =>
            {
                notifier.Notify(1, hasConnected ? "Reconnected" : "Connected", hasConnected ? "Connection to the server has been reestablished" : "Client has been connected to the server.");
                //icon.DisplayBubble(hasConnected
                //    ? "Reconnected!"
                //    : "Connected and ready to begin installing mods.");
                hasConnected = true;

                log.Debug("Sending init, version: " + ClientCommon.Version.ClientVersion);
                var init = new Init
                {
                    SteamIDs = steamids.ToArray(),
                    Version = ClientCommon.Version.ClientVersion,
                    Mods = modController.clientMods.ToArray()
                };
                var json = JObject.FromObject(init).ToString(Formatting.None);
                Send(json);
            };

            client.Bind("commands", e =>
            {
                log.Debug("server: " + e.data);
                JObject msg = JObject.Parse(e.data);
                switch (msg["msg"].Value<string>())
                {
                    case Shutdown.Msg:
                        log.Debug("Shutting down due to server request. Client not up to date.");
                        notifier.Notify(2, "Outdated version", "Updating to new version...");
                        updateClient();
                        shutDown = true;
                        return;
                    case ClientCommon.Methods.Uninstall.Msg:
                        log.Debug("Uninstalling due to server request...");
                        Uninstall();
                        shutDown = true;
                        return;
                    case ClientCommon.Methods.InstallMod.Msg:
                        ThreadPool.QueueUserWorkItem(InstallMod, msg.ToObject<InstallMod>());
                        break;
                    case ClientCommon.Methods.DeleteMod.Msg:
                        ThreadPool.QueueUserWorkItem(DeleteMod, msg.ToObject<DeleteMod>());
                        break;
                    case ClientCommon.Methods.SetMod.Msg:
                        ThreadPool.QueueUserWorkItem(SetMod, msg.ToObject<SetMod>());
                        break;
                    case ClientCommon.Methods.ConnectDota.Msg:
                        ThreadPool.QueueUserWorkItem(ConnectDota, msg.ToObject<ConnectDota>());
                        break;
                    case ClientCommon.Methods.LaunchDota.Msg:
            #if !DEBUG
                        ThreadPool.QueueUserWorkItem(LaunchDota, msg.ToObject<LaunchDota>());
            #endif
                        break;
                    case ClientCommon.Methods.ConnectDotaSpectate.Msg:
                        ThreadPool.QueueUserWorkItem(SpectateGame,
                            msg.ToObject<ConnectDotaSpectate>());
                        break;
                    default:
                        log.Error("Command not recognized.");
                        break;
                }
            });

            client.OnError += (sender, args) => log.Error(string.Format("Controller [{0}] sent us error [{1}] on event [{2}].", args.controller, args.data, args.@event));

            client.OnClose += (sender, args) =>
            {
                log.Info("Disconnected from the server.");
                HandleClose();
            };
        }
示例#11
0
        static void Main(string[] args)
        {
            Thread.Sleep(10000);   //To allow the console to be attached to the visual studio debugger.
            // Will throw here.
            string catalog = "";
            string filter = "";
            try
            {
                catalog = RoleEnvironment.GetConfigurationSettingValue("XSockets.PluginCatalog").ToString();
                filter = RoleEnvironment.GetConfigurationSettingValue("XSockets.PluginFilter").ToString();
            }
            catch (Exception)
            {
            }

            try
            {
                XSocketClient ws = new XSocketClient(@"ws://127.0.0.1:4502/Hello", "http://*", true);
                ws.OnOpen += (s, e) =>
                {
                    Console.WriteLine("Connected");
                    // Start sending messages
                    while (true)
                    {
                        try
                        {
                            if (ws.IsConnected)
                            {
                                ws.Send("", "SendHello");
                            }
                        }
                        catch { }
                        Thread.Sleep(5000);

                    }
                };

                ws.OnClose += (s, e) =>
                {
                    Console.WriteLine("Disconnected");
                };

                ws.OnError += (s, e) =>
                {
                    Console.WriteLine("Error: " + e.data.ToString());
                };

                ws.Bind("SendHello", s =>
                {
                    try
                    {
                        Console.WriteLine("Hello received");
                        ws.Send("", "HelloConfirmation");

                    }
                    catch
                    {
                        Console.WriteLine("Could not send ");
                    }
                });

                ws.Bind("HelloConfirmation", s =>
                {
                    try
                    {
                        Console.WriteLine("Hello confirmed");
                    }
                    catch
                    {
                        Console.WriteLine("Could not send ");
                    }
                });

                ws.Open();

                // Keep console alive
                while (true)
                {
                    Thread.Sleep(10000);
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(" - Exception connecting to XSockets: " + ex.ToString());
            }
        }
示例#12
0
        public static void main()
        {
            log.Debug("D2MP starting...");

            ourDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            File.WriteAllText(Path.Combine(ourDir, "version.txt"), ClientCommon.Version.ClientVersion);
            var iconThread = new Thread(delegate()
                                        {
                                            using (icon = new ProcessIcon())
                                            {
                                                icon.Display();
                                                Application.Run();
                                            }
                                        });

            iconThread.SetApartmentState(ApartmentState.STA);
            iconThread.Start();

            try
            {
                var steam = new SteamFinder();
                string steamDir = steam.FindSteam(true);
                dotaDir = steam.FindDota(true);
                if (steamDir == null || dotaDir == null)
                {
                    log.Fatal("Steam/dota was not found!");
                    return;
                }
                log.Debug("Steam found: " + steamDir);
                log.Debug("Dota found: " + dotaDir);

                addonsDir = Path.Combine(dotaDir, "dota/addons/");
                d2mpDir = Path.Combine(dotaDir, "dota/d2moddin/");
                modDir = Path.Combine(addonsDir, "d2moddin");
                if (!Directory.Exists(addonsDir))
                    Directory.CreateDirectory(addonsDir);
                if (!Directory.Exists(d2mpDir))
                    Directory.CreateDirectory(d2mpDir);
                if (!Directory.Exists(modDir))
                    Directory.CreateDirectory(modDir);

                {
                    string[] dirs = Directory.GetDirectories(d2mpDir);
                    int i = 0;
                    foreach (string dir in dirs)
                    {
                        string modName = Path.GetFileName(dir);
                        log.Debug("Found mod: " + modName + " detecting version...");
                        string infoPath = Path.Combine(d2mpDir, modName + "/addoninfo.txt");
                        string versionFile = "";
                        if (File.Exists(infoPath))
                        {
                            versionFile = File.ReadAllText(infoPath);
                        }
                        Match match = Regex.Match(versionFile, @"(addonversion)(\s+)(\d+\.)?(\d+\.)?(\d+\.)?(\*|\d+)",
                            RegexOptions.IgnoreCase);
                        if (match.Success)
                        {
                            string version = match.Groups.Cast<Group>()
                                .ToList()
                                .Skip(3)
                                .Aggregate("", (current, part) => current + part.Value);
                            log.Debug(modName + "=" + version);
                            mods.Add(new ClientMod {name = modName, version = version});
                        }
                        else
                        {
                            log.Error("Can't find version info for mod: " + modName + ", not including");
                        }
                        i++;
                    }
                }

                //Detect user
                string config = File.ReadAllText(Path.Combine(steamDir, @"config\config.vdf"));
                MatchCollection matches = Regex.Matches(config, "\"\\d{17}\"");
                string steamid;
                var steamids = new List<string>();
                if (matches.Count > 0)
                {
                    foreach (Match match in matches)
                    {
                        steamid = match.Value.Substring(1).Substring(0, match.Value.Length - 2);
                        log.Debug("Steam ID detected: " + steamid);
                        steamids.Add(steamid);
                    }
                }
                else
                {
                    log.Fatal("Could not detect steam ID.");
                    return;
                }

                //Modify gameinfo.txt
                ModGameInfo();

                log.Debug("Starting shutdown file watcher...");
                string pathToShutdownFile = Path.Combine(ourDir, "d2mp.pid");
                File.WriteAllText(pathToShutdownFile, "Delete this file to shutdown D2MP.");

                var watcher = new FileSystemWatcher();
                watcher.Path = ourDir;
                watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                       | NotifyFilters.FileName;
                watcher.Filter = "d2mp.pid";
                watcher.Deleted += (sender, args) => { shutDown = true; };
                watcher.EnableRaisingEvents = true;

                client = new XSocketClient(server, "*");
                bool hasConnected = false;
                client.OnOpen += (sender, args) =>
                {
                    icon.DisplayBubble(hasConnected
                        ? "Reconnected!"
                        : "Connected and ready to begin installing mods.");
                    hasConnected = true;

                    log.Debug("Sending init, version: " + ClientCommon.Version.ClientVersion);
                    var init = new Init
                    {
                        SteamIDs = steamids.ToArray(),
                        Version = ClientCommon.Version.ClientVersion,
                        Mods = mods.ToArray()
                    };
                    var json = JObject.FromObject(init).ToString(Formatting.None);
                    Send(json);
                };

                client.Bind("commands", e =>
                {
                    log.Debug("server: " + e.data);
                    JObject msg = JObject.Parse(e.data);
                    switch (msg["msg"].Value<string>())
                    {
                        case Shutdown.Msg:
                            log.Debug("Shutting down due to server request.");
                            shutDown = true;
                            return;
                        case ClientCommon.Methods.Uninstall.Msg:
                            log.Debug("Uninstalling due to server request...");
                            Uninstall();
                            shutDown = true;
                            return;
                        case ClientCommon.Methods.InstallMod.Msg:
                            ThreadPool.QueueUserWorkItem(InstallMod, msg.ToObject<InstallMod>());
                            break;
                        case ClientCommon.Methods.DeleteMod.Msg:
                            ThreadPool.QueueUserWorkItem(DeleteMod, msg.ToObject<DeleteMod>());
                            break;
                        case ClientCommon.Methods.SetMod.Msg:
                            ThreadPool.QueueUserWorkItem(SetMod, msg.ToObject<SetMod>());
                            break;
                        case ClientCommon.Methods.ConnectDota.Msg:
                            ThreadPool.QueueUserWorkItem(ConnectDota, msg.ToObject<ConnectDota>());
                            break;
                        case ClientCommon.Methods.LaunchDota.Msg:
                            ThreadPool.QueueUserWorkItem(LaunchDota, msg.ToObject<LaunchDota>());
                            break;
                        case ClientCommon.Methods.ConnectDotaSpectate.Msg:
                            ThreadPool.QueueUserWorkItem(SpectateGame,
                                msg.ToObject<ConnectDotaSpectate>());
                            break;
                        default:
                            log.Error("Command not recognized.");
                            break;
                    }
                });
                client.OnClose += (sender, args) =>
                                  {
                                      if (hasConnected)
                                      {
                                          icon.DisplayBubble("Disconnected, attempting to reconnect...");
                                          hasConnected = false;
                                      }
                                      try
                                      {
                                          client.Open();
                                      }
                                      catch (Exception ex)
                                      {
                                          icon.DisplayBubble("Can't connect to the lobby server!");
                                      }
                                  };
                try
                {
                    client.Open();
                }
                catch (Exception ex)
                {
                    icon.DisplayBubble("Can't connect to the lobby server!");
                }
                while (!shutDown)
                {
                    Thread.Sleep(100);
                }
                client.Close();
            }
            catch (Exception ex)
            {
                log.Fatal("Overall error in the program: " + ex);
            }
            //UnmodGameInfo();
            shutDown = true;
            Application.Exit();
        }