Laravel-echo/server 结合 JWT 配置方式

服务器端配置

App\Providers\BroadcastServiceProvider

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;
class BroadcastServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // 更改路由
        Broadcast::routes(["prefix" => "api", "middleware" => ['api', 'jwt.auth']]);

        require base_path('routes/channels.php');
    }
}

laravel-echo-server.json

{
    "authHost": "laravel-echo-server.test",
    "authEndpoint": "/api/broadcasting/auth",
    ...
    "database": "redis",
    ...
}

config/channel.php

<?php

use App\Broadcasting\AdminsChannel;
...
Broadcast::channel('admins.{id}', AdminsChannel::class);

App/Broadcasting/AdminsChannel

<?php

namespace App\Broadcasting;

use App\User;
use CpsAdmin\Models\Admins\Admin;

class AdminsChannel
{
    /**
     * Create a new channel instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Authenticate the user's access to the channel.
     *
     * @param Admin $admin
     * @param $admin_id
     * @return array|bool
     */
    public function join(Admin $admin, $admin_id)
    {
        return (int)$admin->id === (int)$admin_id;
    }
}

客户端配置

html头文件中加入

...
<script src="//{{ Request::getHost() }}:6001/socket.io/socket.io.js"></script>
...

项目启动文件中加入

import Echo from 'laravel-echo'
window.io = require('socket.io-client');

登录后获取token的回调接口中加入代码

...
// 与服务器建立连接
window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001',
    auth: { headers: { 'Authorization': 'Bearer ' + token } }
});

// 监听私有频道
Echo.private('admins.1')
            .notification((notification) => {
                console.log(notification.type);
                console.log(notification.title);
                console.log(notification.error);
            });
刘晓峰
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

是因为我们的挑版本不一样吗,我在中间件写 api 会报 AccessDeniedHttpException

2年前 评论
全村的希望 (楼主) 1年前

正琢磨为啥认证不成功 :kissing_heart: :kissing_heart: :kissing_heart:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!