Вам нужно поместить (блокирующее) чтение внутри вашего бесконечного цикла, например:
while (True) {
$wut = socket_read($sock, 1024, PHP_NORMAL_READ); // $wut will now be a single line sent by the server
echo $wut; // Do anything with the line
}
Таким образом, ваш клиент будет продолжать ждать и обрабатывать ответные сообщения до тех пор, пока сокет не потеряет соединение или вы не разорвете петлю вручную. Я добавил параметр PHP_NORMAL_READ
, чтобы клиент мог читать только одну строку за раз, это, вероятно, более практично для обработки.
В связанной заметке не следует сразу присоединяться к каналу, а дождаться кода ответа 001
. Это гарантирует, что сервер принял вашу идентификацию и готов к приему команд. То, как вы делаете это сейчас, JOIN
может (и, вероятно, будет) отклоняться сервером.