踩坑一:
laravel 命令行生成的event默认是不会实现ShouldBroadcast接口的,所以需要手动添加。
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class PublicMessageEvent implements ShouldBroadcast
{
踩坑二:
laravel 问题 Class ‘Predis\Client’ not found 这个问题中各项配置依赖都检查过好几遍没有问题,在开启队列之后莫名的出现了报错,这个问题最后是因为部分依赖缺失问题导致,重新 composer install 一下就可以解决。
踩坑三:
laravel-ehco-server 服务端正常启动但是客户端在反复检查配置无误之后仍然无法访问服务端socket资源,最后发现是云服务器上的安全组配置并未加入6001端口。
L A R A V E L E C H O S E R V E R
version 1.6.2
? Starting server in DEV mode...
? Running at localhost on port 6001
? Channels are ready.
? Listening for http events...
? Listening for redis events...
Server ready!
踩坑四:
各项配置好之后发现客户端无法正常加入频道前后台无任何报错的前提下,度娘苦寻资料半天尝试各种解决办法无果之后,最后在遇到相同问题下的评论中看到了尝试将socket.io.client版本切换成2.4.0
npm install socket.io-client@2.4.0 --save
回退版本之后再重新打包编译
npm run dev
最后重新开启laravel-echo-server以及重新启动队列之后成功解决问题
laravel-echo-server start
php artisan queue:work
|