Ответ 1
С CURLOPT_RETURNTRANSFER
вам нужно будет повторить результаты curl_exec($ch)
echo curl_exec($ch);
Я следую этот пример для Spring клиента чата MVC, который использовал длительный опрос HTTP.
Мой веб-сервер находится на порту 7555, и мне нужно сделать запрос HTTP длинного опроса на порт 7555 из порта 80 (браузер), поэтому я создал PHP script, который вызывает мой веб-сервис.
<?php
$index = $_GET["index"];
echo $index;
echo $index2;
$urlVar = "http://localhost:7555/test?" . $index . $index2;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlVar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PORT, 7305);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_exec($ch)
?>
Я вызываю этот PHP файл из своего JavaScript с такими параметрами:
($.ajax({
url : "http://localhost/myphpscript.php?index=" + i,
type : "GET",
cache: false,
success : function(messages) {
//do stuff
}
}));
Файл PHP находится в моем локальном хосте. Это, похоже, не работает, потому что JavaScript, кажется, вызывает PHP (который вызывает URL) бесконечно. Правильно ли я делаю длинный опрос с помощью PHP curl? Мне нужно сделать вызов Ajax в JavaScript, поскольку я являюсь вызовом HTTP в curl?
С CURLOPT_RETURNTRANSFER
вам нужно будет повторить результаты curl_exec($ch)
echo curl_exec($ch);
Поскольку ему не разрешено отправлять запросы на межсайтовый сайт (это относится и к портам), вам нужно сделать эту ссылку PHP relais.
Тем не менее. Запрос одного и того же запроса снова и снова (опрос) почти прав, но ваш веб-сервис должен поддерживать соединение открытым до тех пор, пока у него не появится какая-либо новая информация или время запроса (длительный опрос).
Что возвращает ваш веб-сервис (Http-Status ok? Любой контент?)