laravel 私服 echo 上未找到错误

问题描述 投票:0回答:1

我的 laravel echo 有问题,我使用 Pusher,这些东西打印在我的日志上

laravel-echo.js:2567     POST http://localhost:3000/broadcasting/auth 404 (Not Found)

这就是我在前端使用私有的方式

 var echo_to = `chat.{{ Auth::user()->id }}`;
            console.log(echo_to);

            window.Echo.private(echo_to)
                .listen('ChatEvent', (e) => {
                    console.log(e);
                });

这是我发送聊天的活动

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

    public $chat;
    public $id;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Chat $chat, int $id)
    {
        $this->chat = $chat;
        $this->id = $id;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        Log::info("Send to private: chat.{$this->id}");
        return new PrivateChannel('chat.' . $this->id);
    }
}

已成功发送,因为在我的laravel.log中打印了

[2023-09-02 18:38:45] local.INFO: Send to private: chat.2  
[2023-09-02 18:41:12] local.INFO: Send to private: chat.2  
[2023-09-02 18:44:26] local.INFO: Send to private: chat.2  
[2023-09-02 18:54:09] local.INFO: Send to private: chat.2  
[2023-09-03 06:44:21] local.INFO: Send to private: chat.2  
[2023-09-03 06:44:21] local.INFO: Send to private: chat.2  
[2023-09-03 06:44:21] local.INFO: Send to private: chat.2  
[2023-09-03 06:44:41] local.INFO: Send to private: chat.2  
[2023-09-03 07:21:50] local.INFO: Send to private: chat.2  
[2023-09-03 07:22:27] local.INFO: Send to private: chat.2  
[2023-09-03 07:22:37] local.INFO: Send to private: chat.2  
[2023-09-03 07:22:44] local.INFO: Send to private: chat.2  
[2023-09-03 07:22:45] local.INFO: Send to private: chat.2  
[2023-09-03 07:24:50] local.INFO: Send to private: chat.2  

这是加载 echo 的 laravel-echo.js

import Echo from 'laravel-echo';

window.Pusher = require("pusher-js")

console.log("ENV: " + process.env.MIX_PUSHER_APP_KEY, process.env.MIX_PUSHER_APP_CLUSTER);

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    forceTLS: true
});

我也有 laravel-echo-server.json

{
    "authHost": "http://localhost",
    "authEndpoint": "/broadcasting/auth",
    "clients": [
        {
            "appId": "f22ac84fbeaf11ea",
            "key": "24ef3a97bef7f1451fc74dfe6eba46c7"
        }
    ],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "secureOptions": 67108864,
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": {
        "http": true,
        "redis": true
    },
    "apiOriginAllow": {
        "allowCors": true,
        "allowOrigin": "http://localhost:8000",
        "allowMethods": "GET",
        "allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
    }
}

我已经为此设置了我的环境

BROADCAST_DRIVER=pusher

如果您发现我遇到的问题,请告诉我...

laravel socket.io chat pusher livechat
1个回答
0
投票

终于找到问题了,我已经指定了channels.php

<?php

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Broadcast;

/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/

Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

Broadcast::channel('chat.{id}', function ($user, $id) {
    return true;
});

但是在我的app.php中,它看起来像这样

//App\Providers\BroadcastServiceProvider::class,
© www.soinside.com 2019 - 2024. All rights reserved.