【问题标题】:How to implement real-time live messaging jQuery Ajax Mysql Php如何实现实时实时消息 jQuery Ajax Mysql Php
【发布时间】:2017-05-18 03:36:36
【问题描述】:

我正在编写一个非常简单的聊天应用程序。我编写了一个代码,可以在不刷新页面的情况下在数据库中插入数据。但是当我同时对两个用户进行测试时,我只能在我发送新消息时看到其他用户发送给我的内容。我怎样才能让它更生动?我花了一整天的时间阅读 Websockets(特别是 socket.io、ratchet)和长轮询。我在这里找到了有趣的解决方案,但我希望用我已经编写的代码来实现它,这让我感到困惑。我正在使用 php while 语句从数据库中获取数据。

工作 Ajax 代码

<script>
$(document).ready(function(){
$("#buttons").click(function(){
var fromuserid = $("#fromUserId").val();
var touserid = $("#toUserId").val();
var chatMessage = $("#chatMessage").val();
// stored in database.
var dataString = 'fromUserId='+ fromuserid + '&toUserId='+ touserid + '&chatMessage='+ chatMessage;
// AJAX
$.ajax({
type: "POST",
url: "chat.php",
data: dataString,
cache: true,
success: function(response){
   $("#displayMessage").html(response);
       $("#chatForm").trigger("reset");
}
});

return false;
});
});
    </script>

while 语句

       <div id='displayMessage' style='height: 480px; padding:5%; overflow-x:hidden;'>
        <?php
            $chatmsgQ="SELECT * FROM ve_chat c 
   WHERE c.isActive='1' AND (c.fromUserId='$loginid_session' 
   OR c.toUserId='$loginid_session')";
$chatmsgresult=  mysqli_query($db,$chatmsgQ);
        while($chatmsg=  mysqli_fetch_array($chatmsgresult)){?>
   <?php if($chatmsg['fromUserId']==$loginid_session):?>
   <!-- user one -->
<p class='bubble pull-left'><?=$chatmsg['message'];?></p>
<?php elseif($chatmsg['fromUserId']!=$loginid_session):?>
  <!-- user two-->
<p class='bubbleother pull-right'><?=$chatmsg['message'];?></p>
<?php endif;?>
<?php } ;?>
  </div>

【问题讨论】:

  • 显示查询中涉及的表模式。您确定要检索两个用户的消息吗?查询是否在 phpMyAdmin(或类似)中工作?

标签: php jquery mysql websocket long-polling


【解决方案1】:

在推送消息方面,PHP 并不是最好的语言,它实际上是围绕典型的获取/响应流程构建的。

http://www.nodejs.orghttp://socket.io/hey 很容易设置,并且可以很好地配合您使用 php 完成大部分工作,然后使用 node 来处理推送消息。

【讨论】:

  • Node.js 会弄乱我的端口,我怀疑此时它会减慢我的速度?
  • node.js 和 php 将是两个独立的进程,所以你不能只在它们之间调用东西,也不能在客户端调用 node.js 函数。
【解决方案2】:

为了让您的应用程序更加活跃,您需要使用 setInterval 方法。使用这个项目Simple php, ajax and mysql chat application.

【讨论】:

  • 不错的项目人。这似乎是我需要做的。你介意用我的代码举例教学吗?只需一个工作的 sn-p 就不需要太复杂了。我尝试添加window.setInterval(function() { $("#displayMessage").load("chat.php"); }, 2000);,但它给了我未定义的索引
  • 抱歉迟到了。我会尽快上传示例。如果这是一个好的答案,那就接受吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 2018-01-03
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多