HTTP协议分析系列(十)------HTTP协议+分块传输+持久链接+反向ajax+服务器推技术

反向ajax又叫comet,server push,服务器推技术。

应用范围:网页聊天室,新浪,google mail 网页聊天,都有用到

 

原理:一般而言,HTTP协议的特点,连接<->断开

具体什么时间断开?

服务器响应content-length收到的指定length长度的内容时,也就就断开了

 

http1.1协议中,允许你不写content-length,比如要发送的内容长度不知道时。

 

这时需要一个特殊的content-type:chunked

123H\r\n

123H个长度的内容传输给客户端....

....

41H\r\n

 

浏览器继续接受41H长度的内容,\r\n

0\r\n(服务器说内容发完了)


<?php 
set_time_limit(0);
ob_start();

$pad=str_repeat(' ',4000);
echo $pad.'<br/>';
ob_flush();
flush();//把产生的垃圾立即送给浏览器页面而不要等脚本结束再一起送
$i=1;
while($i++){
	echo $pad.'<br/>';
	echo $i.'<br/>';
	ob_flush();
	flush();//把产生的垃圾立即送给浏览器页面而不要等脚本结束再一起送
	sleep(1);
}
/*
 * 思考:如果while循环中,不是1,2,3。。。
 * 而是数据库中记录呢?
 * 而是2人的聊天记录呢?
 * 这样就达到,即时通信。
 * 服务器端--不间断--推送信息--->到客户端
 * 
 * */
?>

网页聊天室的具体实现我会在ajax学习系列中详细写出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
php开发客服系统。真正的实时聊天,使用持久连接+轮询+反向ajax实现 用户端(可直接给客户发送消息) 客服端(点击用户名.即可给该用户回复消息) 讲两种实现方式: 一:iframe + 服务器技术comet(反向ajax,即服务器向浏览器送数据) 二:ajax持久连接 + 长轮询 客服端采用第一种方式:iframe + 服务器技术 思路: 1:新建comentbyiframe.php 该用文件使用while(true)一直连接到服务器不断开. 如果在while的过程中查到了新数据.使用ob_flush给apache服务器.apache再用flush给浏览器. 2:新建html页面,插入一个iframe. 该iframe的src为comentbyiframe.php。 并隐藏iframe。comentbyiframe.php获取的数据用js输出到父窗口中的某个函数.该函数把信息追加到指定的聊天窗口中 3:只要客户端收到用户发来的数据. 就显示为"xx对你说..". 客服端只要点击用户名。即可给该用户发送数据. 用户端采用第二种方式:ajax持久连接 + 长轮询 ajax持久连接:文档加载完毕后(或其他时机),使用ajax请求一个php文件 被请求的php文件通过while(true)循环.迟迟不给apache返回数据的目的. 轮询指:请求服务器的时候.如果服务器没有数据.则一直等.当服务器有数据后.就返回给客户端. 这样请求、响应过后就完成了一次HTTP请求. 还没完.客户端收到数据后又到服务器要数据.这就是轮询 就好像一个乞丐一样. 不给他钱,他就一直跟着你要. 你给他钱以后.他还不满足,又跑来找你要. 实现思路: 进入用户端后.如果没有用户名.使用setcookie设置一个用户名.然后通过ajax持久连接. 不停向服务器索要数据(即客服发送给该用户的记录). 详情:http://www.phpyan.com/home/article/350.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值