#php #websocket
Вопрос:
Я хочу, чтобы, когда пользователь создает новое соединение с websocket (например, открывает новую вкладку), старое соединение автоматически прерывается со стороны сервера. В документации рабочий не нашел необходимой информации. Само соединение выглядит следующим образом:
lt;?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $users = []; $ws_worker = new Worker("websocket://0.0.0.0:8000"); $ws_worker-gt;onWorkerStart = function() use (amp;$users) { $inner_tcp_worker = new Worker("tcp://127.0.0.1:1234"); $inner_tcp_worker-gt;onMessage = function($connection, $data) use (amp;$users) { $data = json_decode($data); if (isset($users[$data-gt;user])) { $webconnection = $users[$data-gt;user]; $webconnection-gt;send($data-gt;message); } }; $inner_tcp_worker-gt;listen(); }; $ws_worker-gt;onConnect = function($connection) use (amp;$users) { $connection-gt;onWebSocketConnect = function($connection) use (amp;$users) { $users[$_GET['user']] = $connection; }; }; $ws_worker-gt;onClose = function($connection) use(amp;$users) { $user = array_search($connection, $users); unset($users[$user]); }; // Run worker Worker::runAll();