iliakologrivov/centrifuge

centrifuge broadcaster for laravel

1.1 2020-09-20 17:57 UTC

This package is auto-updated.

Last update: 2024-09-21 02:47:04 UTC


README

简介

Centrifuge broadcaster for laravel >= 5.4

要求

  • PHP 7.1.3+ 或更高版本
  • Laravel 5.4 或更高版本
  • Centrifugo Server 2.0 或更高版本(见此处

安装

使用 composer 安装此包

composer require iliakologrivov/centrifuge
./artisan vendor:publish --provider='IliaKologrivov\Centrifuge\CentrifugeServiceProvider'

打开您的 web 路由并添加以下内容

IliaKologrivov\Centrifuge\CentrifugeRouterFacade::subscribe();
IliaKologrivov\Centrifuge\CentrifugeRouterFacade::refresh();

打开您的 config/broadcasting.php 并向其中添加以下内容

'connections' => [
    'centrifuge' => [
        'driver' => 'centrifuge',
    ],
    // ...
],

您也可以在 .env 文件中添加配置

CENTRIFUGE_SECRET=<very-long-secret-key>
CENTRIFUGE_API_KEY=<secret-key-for-centrifuge-api>
CENTRIFUGE_CONNECTION_URL='ws://:8000/connection/websocket
CENTRIFUGE_URL=https://:8000
CENTRIFUGE_VERIFY=false
CENTRIFUGE_SSL_KEY=/etc/ssl/some.pem
CENTRIFUGE_BROADCAST_ERROR=true

别忘了安装广播驱动

BROADCAST_DRIVER=centrifuge

基本用法

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

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

一个简单的示例

<?php

namespace App\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use IliaKologrivov\Centrifuge\Channels\Channel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class event implements ShouldBroadcastNow
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public function broadcastAs()
    {
        return 'event-name';
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Centrifuge\Channels\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('example-channel');
    }
}

在视图中使用 Blade 指令

@centrifugeConnectToken(<custom_user_token>)//get connect token for custom id user
@centrifugeAuthConnectToken(86600)//get connect user for auth user
@centrifugeWsConnectUrl()//get connect url for ws

示例视图

<script>
const centrifugeUserToken = '@centrifugeAuthConnectToken(86600)';
const centrifugeConnectionUrl = '@centrifugeWsConnectUrl';
</script>
<script src="{!! mix('/js/app.js') !!}"></script>

添加到 bootstrap.js 中

window.Centrifuge = require('centrifuge');
window.centrifuge = new Centrifuge(centrifugeConnectionUrl);

centrifuge.setToken(centrifugeUserToken);
centrifuge.connect();

centrifuge.on('connect', function(context) {
    console.log('connect', context);
}).on('disconnect', function(context) {
    console.error('disconnect', context);
    centrifuge.disconnect();
}).on('error', function(error) {
    console.error(error);
});

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件