我看56秀那个聊天就是即时的, 而且就是网页, 没用flash.突然发这个贴的时候想到一个方法, 后台不断的ajax获取数据就行了, 因为服务器可以写个专门的页面, 只处理新的数据, 数据量不大, 客户端用JavaScript显示上去. 刷新率可以做的很快, 比如几秒. 不知道这个方案是否可行. 不过56那个网页聊天看上去就是即时的, 不知道它是用的哪个技术.
解决方案 »
- 请教高手 怎么用JS获取word文档中的内容
- 为什么这个不是闭包
- 问一个关于jquery hover事件的小白问题
- 急!!!javascript中怎么取到table中的单元格的值?
- 懂JavaScript高手来.....................
- 100分求SQL更新数据库问题
- EXRJS结合ASP.NET进行开发,文本框带html字符报错
- 用户登录成功后按F5刷新后用户登出了,是什么原因?求解答
- 本人太菜,折腾了2都没搞定,js 定时器的问题
- 关于在线编辑器的问题,请做过的近来帮帮忙!!!!!(高分,分不够再加)
- 请教一个checkbox返回值的问题
- 求救!!如何让这段CSS支持IE浏览器!
ajax = function(method, url, data) {
var objxml = jsuse.createXMLHttpRequest(); //自己写这个函数, 我使用了一个库.
if (url.indexOf("http://") != 0) {
url = jsuse.BASE_URL + url;
}
objxml.open(method, url, true); //异步调用
objxml.setRequestHeader("Content-type", "application/x-octet-stream");
var pos = 0;
objxml.onreadystatechange = function() {
if (objxml.readyState == 4) {
if (objxml.status == "200") {
document.write("200 OK");
} else {
//document.write(objxml.status);
}
} else if(objxml.readyState == 3) {
var str = objxml.responseText;
document.write(str.substr(pos));
pos = str.length;
} else {
document.write(objxml.readyState+"<br />");
}
}
try {
objxml.send(data);
} catch (e) {
return false;
}
return true;
}
jsuse(function(){
ajax("post","test.php",""); //这一句会在onLoad里加载, 可以写在body的onLoad里.
});
PHP页面
set_time_limit(0); //设置页面永不超时
for($i=0;$i<3000;$i++){ //先把浏览器缓冲清掉, 不同浏览器这个值不同.
echo " ";
}
ob_implicit_flush(true); //设置PHP实时输出
$n = 0;
while(true) {
echo "$n yeah :-))))<br />";
@ob_flush();//刷新缓冲.
sleep(1);
$n++;
}测试可以连续实时的输出.上面代码有个问题, ajax取的数据会持续增大, 应该达到一个值, 重新连接一次. 服务器端也要有具体控制数据的方法.