Только одно соединение одновременно в phpwebsocket

#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); }
  }
}
  

Чтобы отключить пользователя, который не отвечает, я бы обновлял временную метку пользователя каждый раз, когда пользователь отправляет сообщение на сервер. Теперь единственное, что нужно сделать, это проверить, превышает ли разница между меткой времени пользователя и текущим временем ваше время отключения. Если это так, пните его 🙂