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); }
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; } }
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; }