从回调重定向用户的最佳方法


Best method to redirect user fom callback

我们加载一个iframe,其内容由第三方提供商控制。用户执行所需的操作。可能需要1到15分钟。一旦操作完成,第三方提供商将向我们的回调发送一条消息,提醒我们。目前我们是这样解决的:

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秒查询一次数据库寻找一个完成,当它发生时,我们重定向用户。

查询数据库查找成功似乎效率低下。有没有更好的办法?

不幸的是,这是http的问题,客户端需要从后端轮询数据来检查发生的更新。

一个更好的解决方案是使用websocket,它允许后端在发生变化时通知前端。

这是websocket的链接

相对容易设置和使用。