有效自动刷新聊天

时间:2013-11-06 22:17:28

标签: php refresh chat

我的聊天时间每0.1秒自动刷新一次,但有时需要永久​​刷新甚至首先加载。

代码:

我在html文档的htdocs之前有我的Body OnLoad脚本。

<body onload="chat_load()">

这是我的java脚本。

<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script type='text/javascript'>
var updateTime = 1;
var running = false;

var counter = 0;

function chat_update(){
    if(counter = updateTime)
        chat_load();
    else
        counter ++;

    if (running == true)
        setTimeout("chat_update", 100);
}

function chat_load(){
    $.post('chat_submit.php', {stage:"load"}, function(data){
        $('#chatbox #primary #window').html( data );
        counter = 0;
        setTimeout("chat_load();", 100*updateTime);

    });
}

function chat_send(){
    var text = document.getElementById("chat_text").value;

        document.getElementById("chat_text").value = '';
    $.post('chat_submit.php', {stage:"send", text:text}, function(data){

        if(data == "good")
            chat_load();
        else
            alert("Please enter a message.");


    });

}
</script>

chat_submit.php

if($stage == "load"){

$query = mysql_query("SELECT * FROM chat_chats ORDER BY time DESC");
if(mysql_num_rows($query) >0){
    while($row = mysql_fetch_assoc($query)){

        $user1 = $row['user'];
        $date = $row['time'];
        $content = $row['text'];

        if($user == $user1){
            $num = 2;
        }else{
            $num = 1;
        }


        echo '<div class="list'.$num.'">';
            echo '<b>'.$user1.'</b> <font color="red"><i>'.$date.'</i></font> <br> '.$content;
        echo "</div>";



    }
}
else
    echo "No messages found be the first.";

}

**

  

我遇到的问题是有时它不会刷新甚至加载   在第一页加载。有谁知道为什么?我还是喜欢它   自动刷新相当快,但现在它似乎滞后并失败相当   许多。代码中是否有任何错误或是否有更好的功能I.   可以用?

**

感谢。

2 个答案:

答案 0 :(得分:1)

您应该将您的Javascript代码包装在

$(function() {
   // code here
});

这是$(document).ready()的jQuery简写。我会删除<body onload="chat_load()">并在Javascript末尾调用chat_load()

答案 1 :(得分:1)

ajax拉动刷新的最初0.1秒间隔肯定太小了。

我会把它增加到几秒钟。

并添加最后一条消息的标记,这样您就可以只提取最新的按摩并将它们添加到您的聊天消息中,这样您就不必在每次请求时发送所有消息,只需从最后一次请求中获取新消息。这应该可以降低mysql负载并加快数据发送速度。