Похоже, это лечит симптом, а не причину

я длинный запрос на опрос. Сценарий на стороне сервера настроен на тайм-аут через 20 секунд.

Таким образом, когда длинный опрос находится в режиме ожидания, а пользователь нажимает другую кнопку, отправка этого нового запроса задерживается до истечения времени ожидания предыдущего сценария.

Я не вижу ничего плохого в коде на стороне jQuery. Почему задерживается событие onclick?

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';
}

Может ли «уснуть» быть проблемой?

Ответы на вопрос(3)

Ваш ответ на вопрос