消息都需要服务器返回
我目前用的是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);
}