首页 > 你向服务器发送了一个请求,过了一段时间返回了A消息,又过了一段时间返回B消息

你向服务器发送了一个请求,过了一段时间返回了A消息,又过了一段时间返回B消息

消息都需要服务器返回
我目前用的是thinkphp开发,前台用户发起一个请求,服务器处理了请求,返回一个A消息,然后服务器接着处理,然后返回B消息

我现在用的是
$this->ajaxReturn($info) 这个thinkphp自带方法,但是返回了以后,就无法执行接下去的操作,怎么破?


可以搜一下 swoole或workerman


ajaxReturn这个方法里用了exit终止函数,所以不会执行后来的程序。

这个服务端好像无法做到,除非是前端一个请求对应返回一个结果,然后拿到这个结果再去请求。后端如果无法入手,就从前端入手吧。只要达到的目的是一样的,手段就无所谓了。


一个请求肯定是不行的。HTTP协议就是一个request一个response,不可能一个请求多个响应的。
如果有多个响应, 可能是用ajax进行了多个请求


这个因为 这次链接已经结束了 所以返回不了B 你可以做一个长链接
或者 每次间隔多久 去服务器请求一次数据


前台做检测,收到第一次的响应之后,就重新请求第二次的结果,或者websocket。


服务器发送事件

如果只是简单的应用的话, 可以用到 HTML5 的 EventSource,具体的细节看文档吧,我贴个demo代码

#JS代码
var evtSource = new EventSource("test.php");
evtSource.onmessage = function(e) {
    console.log("message: " + e.data + "--" + e.type;)
};
evtSource.addEventListener("death", function (e) {
    this.close();
});
#php端代码
header("Content-Type: text/event-stream\n\n");

$death = 5;
while (1) {
    echo 'data: This is a message at time ' . $curDate . "\n\n";
    $death--;
    if($death == 0){
        echo "event: death\n";
        echo "data: end\n\n";
    }
    ob_flush();
    flush();
    sleep(1);
}
【热门文章】
【热门文章】