PHP не отправляет признак конца ответа на long-polling запрос. что делать?

Дано:
NGINX с модулем nginx-push-stream-module для long-polling
Отправка сообщения (php):
$channel_id = '1';
$msg = array('text' => 'a');
$ch = curl_init('http://127.0.0.1/pub?id='.$channel_id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($msg));
if (curl_exec($ch)) 
  echo 'sended '.json_encode($msg);
else 
  echo 'fail';
curl_close($ch);


Прием сообщений:
var xhr = new XMLHttpRequest();
xhr.open('GET', '/sub/' + subID, true);
xhr.send();
xhr.onreadystatechange = xhr.onload = function () {
	alert(xhr.readyState);
if (xhr.status === 200) {
	if (xhr.readyState === 4) {
       console.log(xhr.responseText);
}
}
}

Alert показывает, что при получении сообщений readyState бывает только 2 и 3, но не 4.
Никак не могу понять, в чем дело
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы