コード例 #1
0
ファイル: Scarlet.cs プロジェクト: sifex/scarlet-agent
        public void Scarlet_WS_Initialise()
        {
            /* Scarlet Metrics */
            wsm = new ScarletMetrics();
            wsm.Send("Scarlet Service Started. (" + ip + ")");

            /* Server */
            var wssv = new WebSocketServer("ws://" + scarletAgentURL + ":" + scarletAgentPort);

            wssv.AddWebSocketService <Link>("/");
            wssv.Start();

            /* Client */
            ws = new WebSocket("ws://" + scarletAgentURL + ":" + scarletAgentPort);

            ws.Connect();

            ws.OnOpen += (sender, e) =>
            {
                ws.Send("Browser|Connected");
            };

            ws.OnMessage += (sender, e) =>
            {
                // Scarlet WS API
                // Words = (Browser/Updater)|(IP/*)|(Command)|(Perameters)
                string[] words = e.Data.Split('|');
                if (words[0] == "Updater")
                {
                    switch (words[1])
                    {
                    case ("browserConnect"):
                        Username = words[2];
                        key      = ScarletAPI.Request("user", "info", words[2]);

                        if (backgroundWorker1.IsBusy == false)
                        {
                            ws.Send("Browser|browserConfirmation|free");
                        }
                        else
                        {
                            ws.Send("Browser|browserConfirmation|busy");
                        }
                        break;

                    case ("startDownload"):

                        installDirectory = words[2];
                        if (backgroundWorker1.IsBusy == false)
                        {
                            backgroundWorker1.RunWorkerAsync();
                        }
                        break;

                    case ("startVerify"):

                        verifyOnly       = true;
                        installDirectory = words[2];
                        if (backgroundWorker1.IsBusy == false)
                        {
                            backgroundWorker1.RunWorkerAsync();
                        }
                        break;

                    case ("stopDownload"):

                        backgroundWorker1.CancelAsync();
                        ws.Send("Browser|browserConfirmation|free");
                        break;

                    case ("locationChange"):

                        ChooseFolder();

                        break;

                    case ("updateInstallLocation"):

                        installDirectory = words[2];
                        break;

                    case ("broadcast"):
                        broadcast(words[3]);
                        break;

                    case ("fetchStatus"):

                        pushStatusToBrowser();
                        break;

                    case ("quit"):

                        Application.Exit();
                        break;

                    case ("restart"):

                        Program.restarting = true;
                        Application.Restart();
                        break;
                    }
                }
            };

            ws.OnClose += (sender, e) =>
            {
                ws.Connect();
            };
        }
コード例 #2
0
ファイル: Scarlet.cs プロジェクト: sifex/Scarlet
        public void Scarlet_WS_Initialise()
        {
            /* Scarlet Metrics */
            wsm = new ScarletMetrics();
            wsm.Send("Scarlet Service Started. (" + ip + ")");

            /* Server */
            var wssv = new WebSocketServer("ws://" + scarletURL + ":" + scarletPort);
            wssv.AddWebSocketService<Link>("/");
            wssv.Start();

            /* Client */
            ws = new WebSocket("ws://" + scarletURL + ":" + scarletPort);
            
            ws.Connect();

            ws.OnOpen += (sender, e) =>
            {
                ws.Send("Browser|Connected");
            };

            ws.OnMessage += (sender, e) =>
            {
                // Scarlet WS API
                // Words = (Browser/Updater)|(IP/*)|(Command)|(Perameters)
                string[] words = e.Data.Split('|');
                if (words[0] == "Updater")
                {
                    switch (words[1])
                    {
                        case ("browserConnect"):
                            Username = words[2];
                            key = ScarletAPI.Request("user", "info", words[2]);

                            if (backgroundWorker1.IsBusy == false)
                            {
                                ws.Send("Browser|browserConfirmation|free");
                            }
                            else
                            {
                                ws.Send("Browser|browserConfirmation|busy");
                            }
                            break;

                        case ("startDownload"):

                            installDirectory = words[2];
                            if (backgroundWorker1.IsBusy == false)
                            {
                                backgroundWorker1.RunWorkerAsync();
                            }
                            break;

                        case ("startVerify"):

                            verifyOnly = true;
                            installDirectory = words[2];
                            if (backgroundWorker1.IsBusy == false)
                            {
                                backgroundWorker1.RunWorkerAsync();
                            }
                            break;

                        case ("stopDownload"):

                            backgroundWorker1.CancelAsync();
                            break;

                        case ("locationChange"):
                            /*
                            installDirectory = words[2];
                            NameValueCollection postData = new NameValueCollection();
                            postData.Add("installDir", installDirectory);

                            ScarletAPI.PostRequest("user", "install", key, "", postData);
                            ws.Send("Browser|UpdateInstallLocation|" + installDirectory);
                            */
                            
                            ChooseFolder();

                            break;

                        case ("updateInstallLocation"):

                            installDirectory = words[2];
                            break;
                            
                        case ("broadcast"):
                            broadcast(words[3]);
                            break;

                        case ("fetchStatus"):

                            pushStatusToBrowser();
                            break;

                        case ("quit"):

                            Application.Exit();
                            break;

                        case ("restart"):

                            Program.restarting = true;
                            Application.Restart();
                            break;
                    }
                }
            };

            ws.OnClose += (sender, e) =>
            {
                ws.Connect();
            };

        }