使用AJAX(PHP和JQuery)聊天心跳
我开发了用户之间的jquery实时聊天使用AJAX(PHP和JQuery)聊天心跳,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我开发了用户之间的jquery实时聊天 我想知道我计划的心跳是节省资源还是浪费很多 这是心跳代码: function chatheartbeat(){ var dataString = 'action=chatheartbeat'; $.ajax({ url: "../chat.php", type: "POST", data: dataString, success: function(items){
我想知道我计划的心跳是节省资源还是浪费很多 这是心跳代码:
function chatheartbeat(){
var dataString = 'action=chatheartbeat';
$.ajax({
url: "../chat.php",
type: "POST",
data: dataString,
success: function(items){
if(items != 0){
$.each(items, function (i, elem) {
if ($("#chat_"+elem.from).length > 0) {
$("#chat_"+elem.from+" .chatmessege").append('<div class="chatboxmessagehead"><span>'+elem.from+':</span><a>'+elem.timee+'</a></div><br><div class="chatboxmessage">'+elem.msg+'</div>');
$("#chat_"+elem.from+" .chatmessege").scrollTop($("#chat_"+elem.from+" .chatmessege")[0].scrollHeight);
}else{
startchat(elem.from);
}
});
}
}
});
setTimeout('chatheartbeat();',2000);
}
实际上,这取决于你与多少用户打交道,以及你希望它速度有多快。
发出从数据库获取数据的AJAX请求通常被认为太过分了。显然,根据您的服务器速度和用户容量,您的通话间隔至少应为5秒。通过简单的ajax和php开发实时聊天不是一条可行的道路。 为了实现实时聊天系统,您必须使用node.js。facebook正在使用它 常规ajax和php的问题是,您必须每2秒或3秒查询一次服务器,以检查是否有新数据可用,这会给服务器带来太多的负载
Node.js是一个不错的选择。所以你的聊天每2秒才有效?是节省资源还是浪费很多?与什么相比?旁注:不要将字符串传递给setTimeout,它使用eval,这是邪恶的!传递函数:setTimeoutchatheartbeat,2000;。对每隔2秒钟,您就可以使用socket.io,它是node.js的一个框架。那么为什么要使用socket.io呢?有不同的浏览器,你需要大量的代码来支持所有这些浏览器。因此,socket.io将根据用户的浏览器自动选择最佳解决方案,无论他们的浏览器是否支持web套接字。长轮询并不能解决您的问题,它会给服务器带来负担。我同意Muhammad的观点,轮询与socket.io。。在这种情况下,socket.io是最好的。虽然您的答案是有效的,但我认为它并不完全正确。我的意思是,如果你打算像facebook那样处理大量流量,是的,有必要采用这种解决方案,但如果是一个简单的、移动量很小的解决方案,那么建议的解决方案可以正常工作,而不会产生可观的负载。如果可以更轻松地完成安装、配置和维护,为什么还要添加新的层呢?