glw/auto-refresh

此包的最新版本(v2.1.2)没有提供许可信息。

使用 WebSockets 实现自动刷新的 PHP 库

v2.1.2 2024-08-07 10:05 UTC

This package is auto-updated.

Last update: 2024-09-07 16:23:59 UTC


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 库,请按照以下步骤操作

  1. 安装库 使用 Composer 安装 glw/auto-refresh 库
composer require glw/auto-refresh
  1. 添加 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);
    }
}
  1. 添加 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>
  1. 运行 WebSocket 服务器 运行新创建的 Artisan 命令以启动 WebSocket 服务器
php artisan auto-refresh:serve

WebSocket 服务器现在将监控你指定的目录中的更改,如果有任何更改,将发送信号到浏览器以实现自动刷新。确保在开发 Laravel 应用程序时在终端中运行此命令。