muhammadaftabb / laravel-realtime-user-status
Laravel 实时用户在线状态软件包
Requires
- php: ^8.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- pusher/pusher-php-server: ^7.0
README
Laravel 软件包,用于跟踪和显示实时用户在线状态。
安装
- 通过 Composer 需求此软件包
composer require muhammadaftabb/laravel-realtime-user-status
发布软件包资源和配置
bash 复制代码 php artisan vendor:publish --provider="MuhammadAftab\RealTimeUserStatus\RealTimeUserStatusServiceProvider" --tag=realtime-user-status 运行迁移
bash 复制代码 php artisan migrate 配置 Pusher:将您的 Pusher 凭据添加到 .env 文件中
env 复制代码 PUSHER_APP_ID=your-pusher-app-id PUSHER_APP_KEY=your-pusher-app-key PUSHER_APP_SECRET=your-pusher-app-secret PUSHER_APP_CLUSTER=your-pusher-app-cluster 在布局中包含 JavaScript 文件:将以下脚本标签添加到主布局文件中(例如,resources/views/layouts/app.blade.php)
html 复制代码
<script src="{{ asset('vendor/realtime-user-status/js/realtime-user-status.js') }}" defer></script>添加中间件:将中间件包含在 app/Http/Kernel.php 中的 web 中间件组中
php 复制代码 protected $middlewareGroups = [ 'web' => [ // 其他中间件... \MuhammadAftab\RealTimeUserStatus\Http\Middleware\UpdateUserStatus::class, \MuhammadAftab\RealTimeUserStatus\Http\Middleware\LogUserActivity::class, ], ]; 用法:使用 Blade 视图中的辅助函数显示在线用户及其最后活动。
显示在线用户 blade 复制代码
在线用户
@foreach(\MuhammadAftab\RealTimeUserStatus\Helpers\RealTimeUserStatusHelper::getOnlineUsers() as $user) {{ $user->name }} - @if($user->is_online) {{ config('realtime-user-status.online_status.online') }} @else {{ str_replace(':time', $user->last_activity->diffForHumans(), config('realtime-user-status.online_status.offline')) }} @endif @endforeach 显示用户活动日志 blade 复制代码用户活动日志
@foreach(\MuhammadAftab\RealTimeUserStatus\Helpers\RealTimeUserStatusHelper::getUserActivityLogs() as $log) {{ $log->created_at->diffForHumans() }} - {{ $log->user->name }}: {{ $log->activity }} @endforeach 配置:软件包配置文件位于 config/realtime-user-status.php。您可以在那里自定义在线和离线状态消息。php 复制代码 return [ 'pusher' => [ 'app_id' => env('PUSHER_APP_ID'), 'app_key' => env('PUSHER_APP_KEY'), 'app_secret' => env('PUSHER_APP_SECRET'), 'app_cluster' => env('PUSHER_APP_CLUSTER'), ], 'online_status' => [ 'online' => '在线', 'offline' => '最后看到 :time 之前' ] ]; 许可证:此软件包是开源软件,使用 MIT 许可证授权。