需要帮助改善我的聊天系统

时间:2012-11-11 18:26:08

标签: php jquery mysql chat

我使用jQuery,PHP / MySQL开发了一个随机聊天系统,如“omegle.com”,但我想改进网站。在当前阶段,它向PHP文件发送请求以显示新消息。 jQuery代码在

之下
function load_msg(){

   $.ajax({
        url: 'show_msg.php',
        success: function(result){
            $("#wait").css("display","none");  
            $("#chat_canvas").html(result);
        }
    });

}

setInterval("load_msg()",3000);

但它显示所有消息,我希望只能显示新消息。但我无法理解如何做到这一点。

我举个例子,

假设我在文本区域写了“Hello xyz”。 它会将消息“Hello xyz”发送到php文件,php文件会将其存储在数据库中。接下来,通过向php文件发送请求来显示此消息,并返回结果。结果它显示“Hello xyz”。还行吧。但如果我发送“你好吗?”,那么它将加载两者 “你好xyz”和 “你好吗?”。我不想再次加载“Hello xyz”,因为它之前已经加载过了。我只想加载尚未加载的新邮件。我怎么能这样做?

我很抱歉我的英语不好,英语不是我的母语。

3 个答案:

答案 0 :(得分:2)

您可以发送上次查看的邮件或ID的时间戳。 使用json重写您的查询。

答案 1 :(得分:1)

您可以向表中添加另一列,指定(通过布尔值)消息是否已显示。例如,当第二个PHP文件发出获取消息的请求时,它可以将该列设置为刚刚发送到客户端的每列的1(其中1 =显示),并忽略已设置为1的每个列。

详细说明,您可能会有一个这样的查询,它会更新数据库中满足所有条件的行(以确保它显示在正确的客户端上)。之后,您可以获取所有受影响的行,然后在页面上返回它们(然后通过Javascript检索并显示给客户端)。

UPDATE `table` SET `displayed` = 1 WHERE /* search terms here */

重要的是让所有受影响的人,最好使用PDOmysqli

答案 2 :(得分:1)

您也可以将limit 0,1放入当前查询