A package to show user online status in your laravel app
zaichaopan/online-status is a Laravel package for a package to show user online status in your laravel app.
It currently has 3 GitHub stars and 7 downloads on Packagist (latest version v0.2-beta).
Install it with composer require zaichaopan/online-status.
Discover more Laravel packages by zaichaopan
or browse all Laravel packages to compare alternatives.
Last updated
This packages adds functionality to show user online status, online users and online user number in your laravel app. This package can be used in laravel 5.5 or higher.
This packages uses redis behind the screen. So please install redis in your machine in order to use package.
composer require zaichaopan/online-status
//...
use Zaichaopan\OnlineStatus\HasOnlineStatus;
class User extends Model
{
use HasOnlineStatus;
}
This package uses lifetime in config/session.php as the default user online expiration time. If user remains inactive during this time period, he or she will be considered offline. So if you want to customize. you can override it in config/session.php or you can override it in User model as follow
// ...
class User extends Model
{
use HasOnlineStatus;
public static function getOnlineExpirationInMinutes(): int
{
return 10;
}
}
// App\Http\Kernel.php
class Kernel extends HttpKernel
{
// ...
protected $middlewareGroups = [
'web' => [
\\...
\Zaichaopan\OnlineStatus\Middleware\UserOnline::class
],
//...
];
}
Now when authenticated user makes a web request, his or her online status will be automatically be set.
//
class UserOnline
{
// ...
public function handle(Request $request, Closure $next)
{
optional($request->user())->online();
return $next($request);
}
}
$status = $user->isOnline;
// or
$status = $user->isOnline();
$onlineUserCount = User::onlineCount();
$onlineUsers = User::ofOnline()->get();
// or
$onlineUsers = User::ofOnline()->paginate();
As long as you apply the UserOnline middleware properly, it will automatically set and update authenticated user online status. In case you want to set it manually, you can use online method provided by the trait.
$user->online();
This package listens for Logout event. When user logs out, it will set user online status as offline. In case you may want to set user offline manually, you can use offline method provided by the trait.
$use->offline();
This packages raises two events during the updating user online status process. You may attach listeners to these two events in your EventServiceProvider:
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'Zaichaopan\OnlineStatus\Events\Online' => [
'App\Listeners\Online',
],
'Zaichaopan\OnlineStatus\Events\Offline' => [
'App\Listeners\Offline',
]
];
The Online event will only fire once. It won't fire again if the user is already online