客服回话系统有三种实现方法:
1、用ajax每隔几秒钟请求一次服务器,看看有没得消息,有消失就返回来显示给用户。
2、长连接:建立一次连接之后就不断开,php set_time_out(0) 用ob_flush
flush等函数强制推送给客户端
3、长连接加轮询,建立一个长连接,没有数据就一直连着,当有数据的时候,就返回数据,并结束当前的连接,客户端接受数据并显示,然后再连接服务器端,又开始长连接,就这样周而复始,这就是长轮询。
今天,我们就用第三种方法来实现php客服聊天系统。
只写我的思路:
-----------------------------------
客户php:
while(true){
//一个死循环
//查看是否有客服发送过来的数据
//1、如果没有,那么继续while
//2、如果有那返回数据,并结束程序
if(有){
echo 数据;
exit;
}
sleep(5);
}
-----------------------------------
客户: 客户端
window.onload = function(){
var setting = {
type:"post",
url:'kehu.php',
dataType:'json',
success:function(){
//把内容显示给用户
// 休眠3秒钟,再开始连接
setTimeout(function(){$.ajax(setting);},3000);
}
};
$.ajax(setting);
}
2、长连接
<?php ob_start(); echo str_repeat(' ',4000); ob_flush(); flush(); $i = 0; while(true){ echo $i,'<br>'; ob_flush(); flush(); sleep(3); }