У меня есть клиент сокета, который подключается к серверу и ждет отправки строк текста с сервера.
Я открываю соединение с:
$handle = fsockopen(MY_IP_ADDRESS,MY_PORT,$sockErrno,$sockErrStr); stream_set_blocking($handle,1); stream_set_timeout($handle,MY_SOCKET_TIMEOUT);
Затем:
while (true) { $inString = fgets($handle,256); do some stuff with the received data... }
Все это прекрасно работает. Между полученными сообщениями нет определенного интервала. Сообщения могут поступать несколько раз в секунду или не в течение нескольких минут.
Для потока stream_set_timeout установлено значение 60 секунд … если сообщение не получено, я просто зацикливаюсь и снова переопределяю fgets.
Время от времени соединение нарушается по той или иной причине.
Я хочу иметь возможность обнаруживать сломанное соединение, поэтому я могу начать пытаться снова подключиться.
Есть ли способ обнаружить неисправное соединение? Есть ли что-то, что я могу проверить, когда произойдет тайм-аут потока, который скажет мне, что больше нет соединения?