glw / auto-refresh
此包的最新版本(v2.1.2)没有提供许可信息。
使用 WebSockets 实现自动刷新的 PHP 库
v2.1.2
2024-08-07 10:05 UTC
Requires
- php: ^7.3 || ^8.0
README
描述
Auto-Refresh 是一个 PHP 库,可以在监控的 PHP 文件发生变化时通过 WebSocket 实现自动浏览器刷新。这在开发过程中非常有用,当你想实时查看更改而不需要手动刷新。
特性
- 监控 PHP 文件和目录的变化
- 向浏览器发送自动刷新信号
- 配置简单,易于使用
安装
你可以通过运行以下命令使用 Composer 安装此库:
composer require glw/auto-refresh
将以下 JavaScript 代码添加到你的 HTML 文件中,以连接到 WebSocket 服务器
<script> let socket = new WebSocket("ws://:8080"); socket.onmessage = function(event) { if (event.data === 'reload') { location.reload(); // Auto-refresh the browser } }; </script>
运行服务器
使用以下命令启动 PHP WebSocket 服务器:
php examples/example.php
要在 Laravel 中使用 glw/auto-refresh 库,请按照以下步骤操作
- 安装库 使用 Composer 安装 glw/auto-refresh 库
composer require glw/auto-refresh
- 添加 WebSocket 服务器到 Laravel 创建一个 Artisan 命令来运行监控文件变化的 WebSocket 服务器
a. 创建 Artisan 命令 运行以下命令以创建 Artisan 命令
php artisan make:command AutoRefreshServerSide
b. 编辑 Artisan 命令 打开在 app/Console/Commands/AutoRefreshServerSide.php 新创建的命令文件,并按照以下方式进行编辑
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Glw\AutoRefresh\AutoRefreshServer; class AutoRefreshServerSide extends Command { protected $signature = 'auto-refresh:serve'; protected $description = 'Start the Auto-Refresh WebSocket server'; public function __construct() { parent::__construct(); } public function handle() { $watchedFiles = [ base_path('app'), // Monitor app directory base_path('resources'), // Monitor resources directory base_path('routes'), // Monitor routes directory // Add other directories you want to monitor ]; AutoRefreshServer::runServer($watchedFiles); } }
- 添加 JavaScript 客户端 将以下 JavaScript 代码添加到你的 Blade 文件中(例如,resources/views/welcome.blade.php),以连接到 WebSocket 服务器
<script> let socket = new WebSocket("ws://:8080"); socket.onmessage = function(event) { if (event.data === 'reload') { location.reload(); // Auto-refresh the browser } }; </script>
- 运行 WebSocket 服务器 运行新创建的 Artisan 命令以启动 WebSocket 服务器
php artisan auto-refresh:serve
WebSocket 服务器现在将监控你指定的目录中的更改,如果有任何更改,将发送信号到浏览器以实现自动刷新。确保在开发 Laravel 应用程序时在终端中运行此命令。