参考
环境
- PHP7.4 + phpredis
安装
npm install -g laravel-echo-server
npm install --save socket.io-client
npm install --save laravel-echo
使用
laravel-echo-server init
laravel-echo-server start
php artisan queue:listen
JS部分
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: 'http://xxxxx.local:6001',
});
window.Echo.channel('laravel_database_admin-notification').listen('.server.notification', (e) => {
console.log(Object.values(e));
});
php 部分
class BroadcastNotificationEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
...
public function broadcastOn()
{
return new Channel('admin-notification');
}
public function broadcastWith()
{
return [];
}
public function broadcastAs()
{
return 'server.notification';
}
...
}
使用 Laravel 6.x 版本会自动给通道加上前缀, 具体可以查看日志
laravel-echo-server 日志
[9:05:53 AM] - -vhudVCCOGkhCkGmAAAK joined channel: laravel_database_admin-notification
[9:06:00 AM] - 1sP13WQjeWD7veypAAAL joined channel: laravel_database_admin-notification
Channel: laravel_database_admin-notification
Event: server.notification
Channel: laravel_database_admin-notification
Event: server.notification
Channel: laravel_database_admin-notification
Event: server.notification