在php/ajax聊天系统上工作

在php/ajax聊天系统上工作,php,ajax,events,asynchronous,Php,Ajax,Events,Asynchronous,我一直在开发一个ajax/php聊天系统,在这个系统中,用户显然可以互相聊天。我担心服务器负载,它最初的编程方式是每隔x秒自动刷新div(聊天盒)。它只是这样做的,这是因为用户在我超时时处于活动状态。如果它们保持不活动状态10分钟左右,系统将显示为空闲,然后停止刷新。然后我研究了使用HTML5的服务器发送事件,HTML5运行良好,但并非所有浏览器都能使用它 是否有人有更好的解决方案,或者div刷新现在还可以吗?希望有人能帮忙谢谢 考虑使用COMET,或者看看Ajax推送引擎: 使用COMET的聊

我一直在开发一个ajax/php聊天系统,在这个系统中,用户显然可以互相聊天。我担心服务器负载,它最初的编程方式是每隔x秒自动刷新div(聊天盒)。它只是这样做的,这是因为用户在我超时时处于活动状态。如果它们保持不活动状态10分钟左右,系统将显示为空闲,然后停止刷新。然后我研究了使用HTML5的服务器发送事件,HTML5运行良好,但并非所有浏览器都能使用它


是否有人有更好的解决方案,或者div刷新现在还可以吗?希望有人能帮忙谢谢

考虑使用COMET,或者看看Ajax推送引擎:

使用COMET的聊天系统示例:

//jQuery文档
$(文档).ready(函数(){
});
//jQuery文档
$(文档).ready(函数(){
//如果用户想要结束会话
$(“#退出”)。单击(函数(){
var exit=confirm(“您确定要结束会话吗?”);
如果(exit==true){window.location='index.php?logout=true';}
});
});
//如果用户提交表单
$(“#submitsg”)。单击(函数(){
var clientmsg=$(“#usermsg”).val();
$.post(“post.php”,{text:clientmsg});
$(“#usermsg”).attr(“value”,“value”);
负荷记录;
返回false;
});
函数loadLog(){
var oldcollScrollHeight=$(“#聊天盒”).attr(“scrollHeight”)-20;//请求前的滚动高度
$.ajax({
url:“log.html”,
cache:false,
成功:函数(html){
$(“#chatbox”).html(html);//将聊天日志插入#chatbox div
//自动滚动
var newscrollHeight=$(“#聊天盒”).attr(“scrollHeight”)-20;//请求后的滚动高度
如果(新闻滚动高度>旧滚动高度){
$(“#聊天盒”).animate({scrollTop:newscrollHeight},'normal');//自动滚动到div的底部
}				
},
});
}
设置间隔(负荷记录,1000);

pre-Web sockets聊天系统将以某种方式成为自动刷新黑客。如果你不打算在客户端使用Flash/Java,那就没有办法了。SO聊天系统每秒都会ping服务器上的新消息。我觉得它很有反应。您希望有多少用户?大家好,谢谢,我已经将用户限制为一次100个。如果您愿意放弃PHP,NodeJS+Socket.io是一个很好的组合,它支持几乎所有现代浏览器(和IE6).最后,我使用ajax每隔x秒重新加载一次页面,这对现在和所有浏览器都很好,所以…=]var refreshId=setInterval(function(){if(!idle){$('#chat box').load('inc/chat box.php');$('#user list').load('inc/active users.php');//TODO看看这个<}},5000);'