Ejemplo n.º 1
0
        public static async Task Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            _api              = host.Services.GetRequiredService <IEliteDangerousApi>();
            _socketHandler    = host.Services.GetRequiredService <WebSocketHandler>();
            _variableService  = host.Services.GetRequiredService <VariablesService>();
            _eliteVaInstaller = host.Services.GetRequiredService <EliteVaInstaller>();
            _log              = host.Services.GetRequiredService <ILogger <Program> >();

            await _api.InitializeAsync();

            // Sub to events
            _api.Events.AllEvent += async(sender, e) => await Broadcast("Event", e, true, false);

            // Sub to statuses
            _api.Cargo.OnChange += async(sender, e) => await Broadcast("Cargo", _api.Cargo, true, true);

            _api.Market.OnChange += async(sender, e) => await Broadcast("Market", _api.Market, true, true);

            _api.Modules.OnChange += async(sender, e) => await Broadcast("Modules", _api.Modules, true, true);

            _api.Outfitting.OnChange += async(sender, e) => await Broadcast("Outfitting", _api.Outfitting, true, true);

            _api.Shipyard.OnChange += async(sender, e) => await Broadcast("Shipyard", _api.Shipyard, true, true);

            _api.Ship.OnChange += async(sender, e) => await Broadcast("Status", _api.Ship, true, true);

            _api.NavRoute.OnChange += async(sender, e) => await Broadcast("NavRoute", _api.NavRoute, true, true);

            _api.Backpack.OnChange += async(sender, e) => await Broadcast("Backpack", _api.Backpack, true, true);

            // Sub to options
            _api.Bindings.OnChange += async(sender, e) => await _socketHandler.Broadcast(new WebSocketMessage("Bindings", RemoveLineEndings(_api.Bindings.ToXml())), true, true);

            // Send userprofile
            await _socketHandler.Broadcast(new WebSocketMessage("UserProfile", UserProfile.Get()), true, true);

            // Send latest eliteva version
            await _socketHandler.Broadcast(new WebSocketMessage("EliteVA.Latest", await _eliteVaInstaller.GetLatestVersion()), true, true);

            await _api.StartAsync();

            await host.RunAsync();
        }
Ejemplo n.º 2
0
        public WebSocketHandler(ILogger <WebSocketHandler> log, IEliteDangerousApi api, EliteVaInstaller eliteVaInstaller)
        {
            _log = log;
            _api = api;
            _eliteVaInstaller          = eliteVaInstaller;
            _eliteVaInstaller.OnStart += async(sender, e) =>
            {
                await Broadcast(new WebSocketMessage("EliteVA.Start", null));
            };
            _eliteVaInstaller.OnProgress += async(sender, e) =>
            {
                await Broadcast(new WebSocketMessage("EliteVA.Progress", e.ProgressPercentage));
            };
            _eliteVaInstaller.OnNewTask += async(sender, e) =>
            {
                await Broadcast(new WebSocketMessage("EliteVA.Task", e));
            };
            _eliteVaInstaller.OnFinished += async(sender, e) =>
            {
                await Broadcast(new WebSocketMessage("EliteVA.Finished", null));
            };
            _eliteVaInstaller.OnError += async(sender, e) =>
            {
                await Broadcast(new WebSocketMessage("EliteVA.Error", e));
            };

            _frontendWebSockets = new List <WebSocket>();
            _clientWebSockets   = new List <WebSocket>();
            _pluginWebSockets   = new List <WebSocket>();

            _frontendCatchupMessages = new List <WebSocketMessage>();
            _clientCatchupMessages   = new List <WebSocketMessage>();
            _pluginCatchupMessages   = new List <WebSocketMessage>();

            WebSocketLogs.OnLog += async(sender, e) =>
                                   await Broadcast(new WebSocketMessage("Log", JsonConvert.SerializeObject(e)), WebSocketType.FrontEnd,
                                                   true, false);
        }