내 페이지에 긴 폴링 요청이 있습니다. 서버 측의 스크립트는 20 초 후에 시간 초과로 설정됩니다.여러 AJAX 요청이 서로 지연됩니다.
따라서 긴 폴링이 "유휴 상태"이고 사용자가 다른 버튼을 누르면 이전 요청 스크립트가 시간 초과 될 때까지 새로운 요청 전송이 지연됩니다.
jQuery 측의 코드에는 아무런 문제가 없습니다. onclick-event가 지연되는 이유는 무엇입니까?
function poll()
{
$.ajax({
url: "/xhr/poll/1",
data: {
user_id: app.user.id
},
type: "POST",
dataType: "JSON",
success: pollComplete,
error: function(response) {
console.log(response);
}
});
}
function pollComplete()
{
poll();
}
function joinRoom(user_id)
{
$.ajax({
url: "/xhr/room/join",
dataType: "JSON",
type: "POST",
data: {
user_id: app.user.id,
room_id: room.id
}
});
}
<button id="join" onclick="javascript:joinRoom(2);">Join</button>
############ PHP Controller on /xhr/poll
$time = time();
while ((time() - $time) < 20)
{
$updates = $db->getNewStuff();
foreach ($updates->getResult() as $update)
$response[] = $update->getResponse();
if (!empty($response))
return $response;
else
usleep(1 * 1000000);
return 'no-updates';
}
"usleep"이 문제가 될 수 있습니까?
로컬 호스트에 문제가 있습니까 ?? –
AJAX 호출을위한 PHP 코드는 세션을 활용합니까? –