Laravel 拉维尔回声不';t侦听事件(使用redis)

Laravel 拉维尔回声不';t侦听事件(使用redis),laravel,laravel-echo,Laravel,Laravel Echo,我尝试在我的项目中使用redis/socket.io实现Laravel Echo,一切似乎都正常,但用户无法在浏览器中侦听事件,也不会收到任何错误 这是客户端代码: import Echo from 'laravel-echo'; window.io = require('socket.io-client'); window.Echo = new Echo({ broadcaster: 'socket.io', host: window.location.hostname +

我尝试在我的项目中使用redis/socket.io实现Laravel Echo,一切似乎都正常,但用户无法在浏览器中侦听事件,也不会收到任何错误

这是客户端代码:

import Echo from 'laravel-echo';

window.io = require('socket.io-client');

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001',
});
    
Echo.channel('goals')
    .listen('GoalProcessed', event => console.log(event));
这是事件类

<?php

 namespace App\Events;

 use App\Models\Goal;
 use Illuminate\Broadcasting\Channel;
 use Illuminate\Broadcasting\InteractsWithSockets;
 use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
 use Illuminate\Foundation\Events\Dispatchable;
 use Illuminate\Queue\SerializesModels;

 class GoalProcessed implements ShouldBroadcast
 {
     use Dispatchable, InteractsWithSockets, SerializesModels;

     public $goal;

     public function __construct(Goal $goal)
     {
          $this->goal = $goal;
     }

     public function broadcastOn()
     {
         return new Channel('goals');
     }
 }
routes/channel.php

Route::get('/', function (){
    event(new \App\Events\GoalProcessed(Goal::query()->first()));
});
Broadcast::channel('goals', function ($user) {
    return true;
});
.env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:T5//n2w8CQ4hHbDu+5AfTi67ShJ4bbxZdL0j9flAP/U=
APP_DEBUG=true
APP_URL=http://project.test

LOG_CHANNEL=stack
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=redis
CACHE_DRIVER=file
QUEUE_CONNECTION=redis
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
laravel echo服务器的响应:

echo服务器的输出显示它正在处理事件。它不显示用户已连接,也不显示用户尝试连接和身份验证失败或其他情况。什么也看不出来。这表明用户甚至可能没有到达echo服务器:确保服务器上的端口6001打开,并且没有被防火墙阻止。另外,请检查浏览器开发窗格中的网络选项卡,并查看ws-connection以获取更多线索。我检查了端口6001,它是免费的!