私はとても簡単なチャットアプリケーションを書いています。私はページをリフレッシュせずにデータベースにデータを挿入するコードを書いています。しかし、同時に2人のユーザーでテストすると、新しいメッセージを送信したときに他のユーザーが私に送信した内容がわかります。どうすればそれをより生き生きとすることができますか?私は1日中ウェブサイト(特にsocket.io、ラチェット)とロングポーリングを読んで過ごしました。私はここで興味深いソリューションを見つけましたが、私はすでに書いたコードで実装しようとしています。それは私を混乱させます。私はデータベースからデータを取得するためにPHPのステートメントを使用しています。リアルタイムライブメッセージングの実装方法jQuery Ajax Mysql Php
ワーキング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>
PHPは、実際にそれがメッセージをプッシュしてくるときに使用するのに最適な言語ではありません声明
<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(または同様のもの)で動作しますか? –