Laravel 拉维尔回声不';t侦听事件(使用redis)
我尝试在我的项目中使用redis/socket.io实现Laravel Echo,一切似乎都正常,但用户无法在浏览器中侦听事件,也不会收到任何错误 这是客户端代码: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 +
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,它是免费的!