2015-05-18 5 views
0

Загружается iframe, содержимое которого контролируется сторонним провайдером. Пользователь выполняет необходимые действия. Может занять от 1 минуты до 15 минут. Как только действия будут завершены, сторонний поставщик отправит сообщение нашему обратному вызову, предупреждая нас. В настоящее время здесь, как мы решаем:Лучший способ перенаправления обратного вызова пользователя fom

function getStatus() { 
    var action = "getStatus"; 
    $.ajax({ 
     type: "POST", 
     url: "/scripts/scripts.php", 
     data: { "action" : action, "id" : id }, 
     cache: false, 
     async: false, 
     success: function(html) { 
      if (html == "Success") 
       window.location.href = "/next-step"; 
      else 
       return setTimeout(getStatus, 2000); 
     } 
    }); 
} 

getStatus(); 

Когда мы получим обратный вызов, мы обновляем базу данных, отметив, что действие выполнено. Среднее время, мы используем jquery для запроса базы данных каждые 2 секунды в поисках завершения, и когда это происходит, мы перенаправляем пользователя.

Запрос базы данных, ищущей успех, кажется неэффективным. Есть ли способ лучше?

+0

Есть слишком много возможных ответов, или хорошие ответы будут слишком длинными для этого формата. Пожалуйста, добавьте детали, чтобы сузить набор ответов или изолировать проблему, на которую можно ответить в нескольких параграфах. Я бы предположил, что вы нашли форум для разработки (возможно, [reddit] (https://www.reddit.com/)?) выработать общие положения. Затем, когда у вас возникнут проблемы с кодированием, вернитесь в StackOverflow, и мы будем рады помочь. –

ответ

0

К сожалению, это проблема с http, где клиенту необходимо опросить данные из бэкэнд, чтобы проверить, произошло ли это обновление.

Лучшим решением будет использование websocket, которое позволит серверу уведомлять интерфейс, когда произошли изменения.

Here is the link to websocket

Это сравнительно легко настроить и использовать.

Смежные вопросы