laravel-websockets/src/Services/WebsocketService.php

91 lines
2.4 KiB
PHP
Raw Normal View History

2025-05-08 08:54:11 +00:00
<?php
declare(strict_types=1);
namespace BlaxSoftware\LaravelWebSockets\Services;
use BlaxSoftware\LaravelWebSockets\Events\WebsocketMessageEvent;
class WebsocketService
{
public static function send($data)
{
// TODO make work to send via websocket from anywhere
// WebsocketMessageEvent::dispatch(
// optional(optional(tenant())->tenantable)->public_id,
// $d['event'],
// (is_array($d['data']))
// ? $d['data']
// : ['data' => $d['data']]
// );
}
2025-09-14 13:00:27 +00:00
2025-09-15 08:23:07 +00:00
public static function resetAllTracking()
{
config(['cache.default' => 'file']);
cache()->forget('ws_active_channels');
cache()->forget('ws_socket_auth');
cache()->forget('ws_socket_auth_users');
2025-09-15 08:25:38 +00:00
cache()->forget('ws_socket_authed_users');
2025-09-15 08:23:07 +00:00
cache()->forget('ws_channel_connections');
cache()->forget('ws_connection');
return true;
}
2025-09-15 08:25:38 +00:00
2025-09-15 08:23:07 +00:00
public static function getAuth(string $socketId)
2025-09-14 13:00:27 +00:00
{
config(['cache.default' => 'file']);
2025-09-15 08:20:13 +00:00
return cache()->get('ws_socket_auth_' . $socketId);
2025-09-14 13:00:27 +00:00
}
public static function getChannelConnections(string $channelName)
{
config(['cache.default' => 'file']);
return cache()->get('ws_channel_connections_' . $channelName);
}
public static function getActiveChannels()
{
config(['cache.default' => 'file']);
return cache()->get('ws_active_channels');
}
public static function getConnection(string $socketId)
{
config(['cache.default' => 'file']);
return cache()->get('ws_connection_' . $socketId);
}
2025-09-15 08:20:13 +00:00
public static function getAuthedUsers()
{
config(['cache.default' => 'file']);
return cache()->get('ws_socket_authed_users') ?? [];
}
public static function isUserConnected($userId)
{
config(['cache.default' => 'file']);
$authed_users = cache()->get('ws_socket_authed_users') ?? [];
$user_ids = array_values($authed_users);
return in_array($userId, $user_ids);
}
public static function getUserSocketIds($userId)
{
config(['cache.default' => 'file']);
$authed_users = cache()->get('ws_socket_authed_users') ?? [];
$socket_ids = [];
foreach ($authed_users as $socket_id => $u_id) {
if ($u_id == $userId) {
$socket_ids[] = $socket_id;
}
}
return $socket_ids;
}
2025-05-08 08:54:11 +00:00
}