温馨提示×

如何在Laravel中实现实时通讯

小樊
41
2025-11-06 15:50:28
栏目: 编程语言

在Laravel中实现实时通讯,你可以使用Laravel Echo和Pusher或Laravel Websockets。下面是使用这两种方法的简要步骤:

使用Laravel Echo和Pusher

  1. 安装依赖

    在你的Laravel项目中,使用Composer安装Laravel Echo和Pusher PHP服务器客户端:

    composer require pusher/pusher-php-server
    
  2. 配置Pusher

    .env文件中,设置Pusher的相关配置:

    BROADCAST_DRIVER=pusher
    PUSHER_APP_ID=your_pusher_app_id
    PUSHER_APP_KEY=your_pusher_app_key
    PUSHER_APP_SECRET=your_pusher_app_secret
    PUSHER_APP_CLUSTER=your_pusher_app_cluster
    

    config/broadcasting.php文件中,配置Pusher广播驱动:

    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
            'cluster' => env('PUSHER_APP_CLUSTER'),
            'useTLS' => true,
        ],
    ],
    
  3. 安装Laravel Echo

    使用npm或yarn安装Laravel Echo和相关的依赖:

    npm install --save laravel-echo pusher-js
    

    或者

    yarn add laravel-echo pusher-js
    
  4. 配置Laravel Echo

    resources/js/bootstrap.js文件中,配置Laravel Echo:

    import Echo from 'laravel-echo';
    import Pusher from 'pusher-js';
    
    window.Pusher = Pusher;
    
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        cluster: process.env.MIX_PUSHER_APP_CLUSTER,
        encrypted: true,
    });
    
  5. 监听事件

    在你的JavaScript代码中,监听Laravel事件:

    Echo.private('channel-name')
        .listen('EventName', (e) => {
            console.log(e);
        });
    
  6. 触发事件

    在你的Laravel代码中,触发事件:

    use App\Events\YourEvent;
    
    event(new YourEvent($data));
    

使用Laravel Websockets

  1. 安装依赖

    在你的Laravel项目中,使用Composer安装Laravel Websockets:

    composer require beyondcode/laravel-websockets
    
  2. 发布配置文件

    发布Laravel Websockets的配置文件:

    php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider"
    
  3. 运行WebSocket服务器

    在项目根目录下,运行WebSocket服务器:

    php artisan websockets:serve
    
  4. 配置Laravel广播

    .env文件中,设置广播驱动为pusher

    BROADCAST_DRIVER=pusher
    

    config/broadcasting.php文件中,配置Pusher广播驱动:

    'pusher' => [
        'driver' => 'pusher',
        'key' => env('PUSHER_APP_KEY'),
        'secret' => env('PUSHER_APP_SECRET'),
        'app_id' => env('PUSHER_APP_ID'),
        'options' => [
            'cluster' => env('PUSHER_APP_CLUSTER'),
            'useTLS' => true,
        ],
    ],
    
  5. 监听事件

    与使用Laravel Echo和Pusher的方法相同。

  6. 触发事件

    与使用Laravel Echo和Pusher的方法相同。

这样,你就可以在Laravel项目中实现实时通讯功能了。

0