mydeer
就像我们从来没有来过这里,但这种感觉似曾相识。
实时推送技术的概念及实例

为什么要使用实时推送技术?

当我们需要实时数据推送,更新客户端信息时,我们需要一个技术来承载我们的这些梦想。和微博消息推送类似,阿里旺旺网页聊天类似。

哪些是实时推送技术?

comet,基于 HTTP长连接的“服务器推”技术,是一种新的 Web 应用架构。同事说新浪微博就是用的这种技术;
它只是一个概念,代码还是我们自己写。

我们先剖析下,这个概念: 简单三个字 — 长轮询
这个技术是使用js做请求。
何为 “长” :等待时间长;
何为 “轮询”: 不断请求;

那么加在一起就是 不断请求,但是请求之间间隔时间很长,必须等上一个请求完事后,在继续下一个轮询。

那么一个请求什么时候结束?
这里可以是服务器把请求hold住,要超时了在释放;

要是你害怕服务器不返回怎么办:客户端js settimeout ,每隔一段时间去请求

概念完了,我们看看简单的代码吧:
我们这里介绍一个推送更新客户端时间程序;
每隔5秒更新 客户端的网页显示的时间  的程序;

客户端html+js:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="./jquery.js"></script>
    <title></title>
</head>
<body>
<div class="tmp">123</div>
<script type="text/javascript">
// post 请求
function clin_post(){
 
    $.post("chat.php",function(data){
        $('.tmp').html(data);
        clin_post();
    },'json');
 
}
clin_post();
</script>
</body>
</html>

服务器端PHP:

<?php
 
$b = time();
$num = 5;
$t = 0;
while( ($num - $t)>0 ) {
    $e = time();
    $t = $e - $b;
}
echo json_encode(date('Y-m-d H:i:s'));
 
?>
<< 上一篇 bootstrap中的dropdown组件扩展hover事件 nginx+php-fpm+thinkphp网站配置文件 下一篇 >>
文章标签
随意 | Created At 2014 By William Clinton | 蜀ICP备14002619号-4 |