private static void FileChanged(string filename)
        {
            if (filename.Contains("\\node_modules\\"))
            {
                return;
            }

            if (string.IsNullOrEmpty(filename) ||
                !LiveReloadConfiguration.Current.LiveReloadEnabled)
            {
                return;
            }

            var ext = Path.GetExtension(filename);

            if (string.IsNullOrEmpty(ext))
            {
                return;
            }

            if (_extensionList == null)
            {
                _extensionList = LiveReloadConfiguration.Current.ClientFileExtensions
                                 .Split(',', System.StringSplitOptions.RemoveEmptyEntries)
                                 .ToList();
            }

            if (_extensionList.Contains(ext, StringComparer.OrdinalIgnoreCase))
            {
                // delayed - no longer needed as server restarts automatically refresh on restart
                //bool delayed = ext == ".cshtml" || ext == ".cs" || ext == ".json"  || ext == ".xml";
                _ = LiveReloadMiddleware.RefreshWebSocketRequest(); // delayed
            }
        }
        private static void FileChanged(string filename)
        {
            if (filename.Contains("\\node_modules\\"))
            {
                return;
            }

            if (string.IsNullOrEmpty(filename) ||
                !Config.CurrentValue.LiveReloadEnabled)
            {
                return;
            }

            var ext = Path.GetExtension(filename);

            if (ext == null)
            {
                return;
            }

            if (Config.CurrentValue.ClientFileExtensions.Contains(ext))
            {
                _ = LiveReloadMiddleware.RefreshWebSocketRequest();
            }
        }
        /// <summary>
        /// Hook up the Markdown Page Processing functionality in the Startup.Configure method
        /// </summary>
        /// <param name="builder"></param>
        /// <returns></returns>
        public static IApplicationBuilder UseLiveReload(this IApplicationBuilder builder)
        {
            var config = LiveReloadConfiguration.Current;

            if (config.LiveReloadEnabled)
            {
                var webSocketOptions = new WebSocketOptions()
                {
                    KeepAliveInterval = TimeSpan.FromSeconds(240),
                };
                builder.UseWebSockets(webSocketOptions);

                builder.UseMiddleware <LiveReloadMiddleware>();

                LiveReloadFileWatcher.StartFileWatcher();

                // always refresh when the server restarts...
                _ = LiveReloadMiddleware.RefreshWebSocketRequest();
            }

            return(builder);
        }
        /// <summary>
        /// Hook up the Markdown Page Processing functionality in the Startup.Configure method
        /// </summary>
        /// <param name="builder"></param>
        /// <returns></returns>
        public static IApplicationBuilder UseLiveReload(this IApplicationBuilder builder)
        {
            var config = LiveReloadConfiguration.Current;

            if (config.LiveReloadEnabled)
            {
                var webSocketOptions = new WebSocketOptions()
                {
                    KeepAliveInterval = TimeSpan.FromSeconds(240),
                    ReceiveBufferSize = 256
                };
                builder.UseWebSockets(webSocketOptions);

                builder.UseMiddleware <LiveReloadMiddleware>();

                LiveReloadFileWatcher.StartFileWatcher();

                // always refresh when the server restarts... //this isn't necessary as the browser disconnects and on reconnect refreshes
                LiveReloadMiddleware.RefreshWebSocketRequest();
            }

            return(builder);
        }
Esempio n. 5
0
        private static void FileChanged(string filename)
        {
            // this should really never happen - but just in case
            if (!LiveReloadConfiguration.Current.LiveReloadEnabled)
            {
                return;
            }

            if (string.IsNullOrEmpty(filename) || filename.Contains("\\node_modules\\"))
            {
                return;
            }

            var ext = Path.GetExtension(filename);

            if (string.IsNullOrEmpty(ext))
            {
                return;  // we don't care about extensionless files
            }
            FileInclusionModes inclusionMode = FileInclusionModes.ContinueProcessing;

            if (LiveReloadConfiguration.Current.FileInclusionFilter is Func <string, FileInclusionModes> filter)
            {
                inclusionMode = filter.Invoke(filename);
                if (inclusionMode == FileInclusionModes.DontRefresh)
                {
                    return;
                }
            }

            if (_extensionList == null)
            {
                lock (_loadLock)
                {
                    if (_extensionList == null)
                    {
                        _extensionList = LiveReloadConfiguration.Current.ClientFileExtensions
                                         .Split(',', StringSplitOptions.RemoveEmptyEntries)
                                         .ToList();
                    }
                }
            }

            if (inclusionMode == FileInclusionModes.ForceRefresh ||
                _extensionList.Contains(ext, StringComparer.OrdinalIgnoreCase))
            {
                if (_isFolderCreated)
                {
                    _throttler.Debounce(2000, param =>
                    {
                        _ = LiveReloadMiddleware.RefreshWebSocketRequest();
                        _isFolderCreated = false;
                    });
                }
                else
                {
                    // delayed - no longer needed as server restarts automatically refresh on restart
                    //bool delayed = ext == ".cshtml" || ext == ".cs" || ext == ".json"  || ext == ".xml";
                    _ = LiveReloadMiddleware.RefreshWebSocketRequest(); // delayed
                }
            }
        }