首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >收到新消息时显示聊天窗口

收到新消息时显示聊天窗口
EN

Stack Overflow用户
提问于 2014-02-06 16:26:48
回答 2查看 1.2K关注 0票数 0

我正在尝试建立聊天系统。问题是,当一个用户向另一个用户输入消息时,聊天窗口不会立即向接收者显示该消息。只有在接收器刷新窗口之后,一切才能正常工作。下面是我当前的代码:

profile.php

代码语言:javascript
运行
复制
setInterval(function(){
    var username="<?php echo $username; ?>";
    $.ajax({
        url:"s/shower.php",
        type:"POST",
        data:"shower=" + username,
        success:function(data){
                if (data == 1){
                    $(".pchat").show();
                }
        }
    });
},500);

$(".chat_wind").click(function(){
    var id=$(this).attr("id");
    var newid=id.split("chat_wind");
    var datid=newid[1];

    $(".pchat").show();

});


$(".chatform").submit(function(){
    var parent=$(this).attr("id");
    var split=parent.split("chatform");
    var newid=split[1];

    var val=$("#chati").val();
    if (val.length == 0){
        return false;
    }

    $.ajax({
        url:"s/log.php",
        type:"post",
        data:"newid=" + newid + "&txt=" + val,
        success:function(data){
            setInterval(function(){
                $.ajax({
                    url:"s/chat.php",
                    type:"post",
                    data:"username=" + newid,
                    success:function(w){

                        var objDiv = document.getElementById("cbody");
                        objDiv.scrollTop = objDiv.scrollHeight;
                        $("#cbody").html(w);
                    }
                });
            },500);
        }
    });

    $("#chati").val("");
    return false;
});

chat.php

代码语言:javascript
运行
复制
<?php
    include "db.php";
    include "timeago.php";

    if (isset($_POST['username'])){
        $username=$_POST['username'];
        $dat='';
        $sql=mysql_query("SELECT * FROM chat where uchated='$username' ORDER BY time asc");
        while($row=mysql_fetch_array($sql)){
            $time=$row['time'];
            $txt=$row['text'];

            $dat.="
                <div id='msg'>
                $txt <div id='ctime'></div>
                </div>";

        }
        echo $dat;
    }

?>

shower.php

代码语言:javascript
运行
复制
<?php
    include "db.php";
    if (isset($_POST['shower'])){
        $shower=$_POST['shower'];

        $sqlara=mysql_query("SELECT * FROM chat where uchated='$shower'");

        $numara=mysql_num_rows($sqlara);

        if ($numara == 0){
            echo "0";
        }else{
            echo "1";
        }
    }
?>
EN

回答 2

Stack Overflow用户

发布于 2014-02-06 16:33:59

您需要使用websockets实现聊天系统。我不知道php。您可以尝试此链接http://www.sanwebe.com/2013/05/chat-using-websocket-php-socket以了解websocket编程

票数 1
EN

Stack Overflow用户

发布于 2014-02-06 16:37:55

如果你真的需要,你可以使用HTML5支持的WebSocket和服务器发送的事件。但首先,long polling是不错的选择。然后,您可以了解您的聊天网站的要求,并进行升级。

Read more on these methods (link).

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21597557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档