#php #websocket #phpwebsocket
#php #websocket #phpwebsocket
Вопрос:
Я играю с phpwebsocket. Есть ли способ, чтобы одновременно подключался только один пользователь?
Если второй пользователь пытается подключиться, они должны быть автоматически отключены, и если первый пользователь простаивает в течение определенного периода времени, его следует отключить, чтобы освободить место для нового пользователя.
Возможно ли это — и если да, кто-нибудь знает как?
Ответ №1:
Конечно, можно ограничить количество пользователей одним пользователем. Вы должны посмотреть на количество пользователей и решить, принимать или нет новые подключения. В коде это выглядит так:
if($socket==$master){
$client=socket_accept($master);
if($client<0){ console("socket_accept() failed"); continue; }
else{ connect($client); }
}
Вы можете выполнить дополнительную инструкцию if, чтобы проверить, равен ли usercount 0, то есть вы принимаете подключение:
if($socket==$master){
if(count($users) == 0){
$client=socket_accept($master);
if($client<0){ console("socket_accept() failed"); continue; }
else{ connect($client); }
}
}
Чтобы отключить пользователя, который не отвечает, я бы обновлял временную метку пользователя каждый раз, когда пользователь отправляет сообщение на сервер. Теперь единственное, что нужно сделать, это проверить, превышает ли разница между меткой времени пользователя и текущим временем ваше время отключения. Если это так, пните его 🙂