denis660/laravel-centrifugo

laravel 8.75.0 - 11 和 Centrifugo >= 5.4.5 的 Centrifugo 广播器

3.1 2023-06-08 04:52 UTC

This package is auto-updated.

Last update: 2024-09-18 18:19:56 UTC


README

文档 英文 | 俄文

Laravel + Centrifugo

Laravel 8.75.0 - 11 的 Centrifugo 广播驱动程序

Build Status Latest Version Quality Score StyleCI Total Downloads Software License

简介

laravel 的 Centrifugo 广播器,基于

特性

要求

  • PHP >= 7.4 , 8.0, 8.1, 8.2, 8.3
  • Laravel 8.75.0 - 11.0
  • Guzzlehttp/Guzzle 6 - 7
  • Centrifugo 服务器 v5.4.5 或更高版本(见此处

安装

默认情况下,新 Laravel 11 应用程序中未启用广播。您可以使用 install:broadcasting Artisan 命令启用广播

php artisan install:broadcasting

install:broadcasting 命令将创建 config/broadcasting.php 配置文件。此外,命令还会创建 routes/channels.php 文件,您可以在其中注册应用程序的广播授权路由和回调。

使用 composer 需要此包

composer require denis660/laravel-centrifugo
php artisan centrifuge:install

应用程序凭证 为了建立与 Reverb 的连接,客户端和服务器之间必须交换一组 Reverb "应用程序" 凭证。这些凭证在服务器上配置,并用于验证客户端的请求。您可以使用以下环境变量定义这些凭证

您还应该在 .env 文件中添加以下两行

CENTRIFUGO_TOKEN_HMAC_SECRET_KEY=token_hmac_secret_key-from-centrifugo-config
CENTRIFUGO_API_KEY=api_key-from-centrifugo-config
CENTRIFUGO_URL=https://:8000

这些行是可选的

CENTRIFUGO_SSL_KEY=/etc/ssl/some.pem
CENTRIFUGO_VERIFY=false

别忘了更改 .env 文件中的 BROADCAST_DRIVER 设置!

BROADCAST_DRIVER=centrifugo

基本用法

要配置 Centrifugo 服务器,请参阅 官方文档

有关广播事件,请参阅 Laravel 的官方文档

简单的客户端使用示例

<?php
declare(strict_types = 1);

namespace App\Http\Controllers;


use denis660\Centrifugo\Centrifugo;
use Illuminate\Support\Facades\Auth;

class ExampleController
{

    public function example(Centrifugo $centrifugo)
    {
        // Send message into channel
        $centrifugo->publish('news', ['message' => 'Hello world']);

        // Generate connection token
        $token = $centrifugo->generateConnectionToken((string)Auth::id(), 0, [
            'name' => Auth::user()->name,
        ]);

        // Generate private channel token
        $apiSign = $centrifugo->generatePrivateChannelToken((string)Auth::id(), 'channel', time() + 5 * 60, [
            'name' => Auth::user()->name,
        ]);

        //Get a list of currently active channels.
        $centrifugo->channels();

        //Get channel presence information (all clients currently subscribed on this channel).
        $centrifugo->presence('news');

    }
}

可用方法

许可

MIT 许可证(MIT)。有关更多信息,请参阅[许可文件](https://github.com/denis660/laravel-centrifugo/blob/master/LICENSE)。