求教一个 ajax 的长连接有关问题。
程序员文章站
2024-01-03 17:27:58
...
求教一个 ajax 的长连接问题。。
小弟在做一个类似webQQ的聊天网页,本来是通过ajax每两秒发送一次请求获取信息,现在想改为一个消息发出去后,如果没有新消息服务器则不返回,遇到新消息后由服务器返回,客户端再发一个请求,
但是实现过程中发现,当这个消息在等待的时候,新创建的别的ajax请求也在等待,貌似要等这个返回之后,其它的才继续执行,但是ajax创建一个对象之后,应该互相就没关系了呀?我是用的jquery ajax
PHP这边我是这样写的:
while(($res->num_rows)==0){
$res->close();
sleep(1);
$res=$mysqli->query($sql);
}
当把这段while注释掉,客户端采用每2s发送一次请求时无任何问题
客户端代码:
function get_msg(){
$.post("/lts/class/get_msg.php","lst_msg="+lst_msg,function Get_msg_callback(msg_back){
var i=0;
while(msg_back[i].msg!=""){
$('.msgs_box').append(""+msg_back[i].sender+" : "+msg_back[i].msg+" ");
lst_msg=msg_back[i].id;
i++;
}
//立即调用
//get_msg();
},"json");
return;
}
------解决方案--------------------
是你的session问题
建议在无session更改的页面 session_start 以后马上 session_write_close() 就可以了
小弟在做一个类似webQQ的聊天网页,本来是通过ajax每两秒发送一次请求获取信息,现在想改为一个消息发出去后,如果没有新消息服务器则不返回,遇到新消息后由服务器返回,客户端再发一个请求,
但是实现过程中发现,当这个消息在等待的时候,新创建的别的ajax请求也在等待,貌似要等这个返回之后,其它的才继续执行,但是ajax创建一个对象之后,应该互相就没关系了呀?我是用的jquery ajax
PHP这边我是这样写的:
while(($res->num_rows)==0){
$res->close();
sleep(1);
$res=$mysqli->query($sql);
}
当把这段while注释掉,客户端采用每2s发送一次请求时无任何问题
客户端代码:
function get_msg(){
$.post("/lts/class/get_msg.php","lst_msg="+lst_msg,function Get_msg_callback(msg_back){
var i=0;
while(msg_back[i].msg!=""){
$('.msgs_box').append("
lst_msg=msg_back[i].id;
i++;
}
//立即调用
//get_msg();
},"json");
return;
}
------解决方案--------------------
是你的session问题
建议在无session更改的页面 session_start 以后马上 session_write_close() 就可以了
相关文章
相关视频