Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AJAX(PHP和JQuery)聊天心跳_Php_Javascript_Jquery_Ajax - Fatal编程技术网

使用AJAX(PHP和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){

我开发了用户之间的jquery实时聊天


我想知道我计划的心跳是节省资源还是浪费很多

这是心跳代码:

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那样处理大量流量,是的,有必要采用这种解决方案,但如果是一个简单的、移动量很小的解决方案,那么建议的解决方案可以正常工作,而不会产生可观的负载。如果可以更轻松地完成安装、配置和维护,为什么还要添加新的层呢?