morozovsk / websocket

simple php websocket server + demos + yii/yii2 integration + php 7 support
368 stars 74 forks source link

GenericEvent считывает не весь буфер #26

Closed micronull closed 7 years ago

micronull commented 7 years ago

Если пакет превышает значение константы SOCKET_BUFFER_SIZE, то он не считывает следующую часть, а ждет повторного срабатывания события onRead.

morozovsk commented 7 years ago

Да, так и задумано. Происходит равномерное считывание данных со всех соединений. К тому же это единственный способ, который я нашёл, чтобы понять, что доступны данные в буфере соединения иначе бы fread подвисал при попытке считывания пустого буфера до тех пор пока данные придут или таймаут сработает. Думал использовать для это поле unread_bytes из результатов функции stream_get_meta_data , но там прямо в описании стоит: "Замечание: Вы не должны использовать это значение в скрипте."

micronull commented 7 years ago

Ясно. Спасибо за разъяснение.