Пример #1
0
        private WebServer BuildServer(string previewPath, string subtitlesPath, IViewForMediaWebSocket view, int port)
        {
            var url = WebServerUtils.GetWebServerIpAddress(port);

            _logger.LogInformation(
                $"{nameof(BuildServer)}: Building server on url = {url}, " +
                $"using path for previews = {previewPath} and for subs = {subtitlesPath}");
            var server = new WebServer(o => o
                                       .WithUrlPrefix(url)
                                       .WithMode(HttpListenerMode.EmbedIO))
                         .WithLocalSessionManager()
                         .WithCors()
                         .WithStaticFolder(AppWebServerConstants.ImagesPath, previewPath, false)
                         .WithStaticFolder(AppWebServerConstants.SubTitlesPath, subtitlesPath, false)
                         .WithWebApi("/api", m => m.WithController(() => _castItController))
                         .WithModule(_mediaModule);

            if (view != null)
            {
                _logger.LogInformation($"{nameof(BuildServer)}: View for socket was provided, adding the media ws");
                server.WithModule(new MediaWebSocketModule(_loggerFactory.CreateLogger <MediaWebSocketModule>(), this, view, "/socket"));
            }

            server.WithModule(new ActionModule("/", HttpVerbs.Any, ctx => ctx.SendDataAsync(new { Message = "Server initialized" })));

            //if a clients is disconected this throws an exception
            server.Listener.IgnoreWriteExceptions = false;
            return(server);
        }
Пример #2
0
        public void Init(
            string previewPath,
            string subtitlesPath,
            IViewForMediaWebSocket view,
            ICastService castService,
            CancellationToken cancellationToken,
            int?port = null)
        {
            try
            {
                if (port.HasValue)
                {
                    _logger.LogInformation($"{nameof(Init)}: Port = {port} was provided, it will be used to start this web server...");
                }
                port ??= WebServerUtils.GetOpenPort();
                _logger.LogInformation($"{nameof(Init)}: Starting web server on url = {WebServerUtils.GetWebServerIpAddress(port.Value)}...");

                _castItController = new CastItController(_loggerFactory.CreateLogger <CastItController>(), _fileService, castService, _ffmpegService, _player, _appSettings);
                _webServer        = BuildServer(previewPath, subtitlesPath, view, port.Value);
                _webServer.Start(cancellationToken);

                _logger.LogInformation($"{nameof(Init)}: Server was successfully started");
            }
            catch (Exception e)
            {
                _logger.LogError(e, $"{nameof(Init)}: Unknown error");
                _telemetryService.TrackError(e);
                throw;
            }
        }
Пример #3
0
 public MediaWebSocketModule(
     ILogger <MediaWebSocketModule> logger,
     IAppWebServer server,
     IViewForMediaWebSocket view,
     string urlPath)
     : base(urlPath, true)
 {
     _logger = logger;
     _view   = view;
     server.OnFileLoading        += FileLoading;
     server.OnFileLoaded         += FileLoaded;
     server.OnFileLoadingError   += FileLoadingError;
     server.OnEndReached         += EndReached;
     server.OnTimeChanged        += TimeChanged;
     server.OnPositionChanged    += PositionChanged;
     server.OnPaused             += Paused;
     server.OnDisconnected       += ChromecastDisconnected;
     server.OnVolumeChanged      += VolumeLevelChanged;
     server.OnAppClosing         += AppClosing;
     server.OnAppSettingsChanged += AppSettingsChanged;
     server.OnPlayListAdded      += PlayListAdded;
     server.OnPlayListChanged    += PlayListChanged;
     server.OnPlayListDeleted    += PlayListDeleted;
     server.OnFileAdded          += FileAdded;
     server.OnFileChanged        += FileChanged;
     server.OnFileDeleted        += FilesDeleted;
     server.OnServerMsg          += SendInfoMessage;
 }