2017-05-18 15 views
0

아주 간단한 채팅 응용 프로그램을 작성하고 있습니다. 페이지를 새로 고치지 않고 데이터베이스에 데이터를 삽입하는 코드를 작성했습니다. 그러나 동시에 두 명의 사용자를 테스트 할 때 새 메시지를 보낼 때 다른 사용자가 보낸 메시지 만 볼 수 있습니다. 어떻게하면 더 살릴 수 있습니까? 나는 하루 종일 Websocket (특히 socket.io, ratchet)과 long-polling을 읽는 데 보냈다. 여기서 흥미로운 솔루션을 찾았지만 이미 작성한 코드로 구현하려고합니다. 혼란 스럽습니다. 데이터베이스에서 데이터를 가져 오기 위해 PHP while 문을 사용하고 있습니다.실시간 라이브 메시징 구현 방법 jQuery Ajax Mysql Php

작업 Ajax 코드 문

 <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> 
+0

쿼리에 포함 된 테이블 스키마를 표시하십시오. 두 사용자의 메시지를 모두 검색 하시겠습니까? phpMyAdmin (또는 비슷한)에서 쿼리가 작동합니까? –

답변

2

PHP는 메시지를 밀어 올 때 사용하는 가장 좋은 언어, 정말 아닙니다 정말 주위에 일반적인 GET을으로 구축

<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> 

동안

/응답 좀 흐른다.

http://www.nodejs.orghttp://socket.io/ 안녕하세요, 설치가 매우 쉽고 대부분의 작업에 PHP를 사용하여 잘 작동하고 노드를 사용하여 푸시 메시지를 처리 ​​할 수 ​​있습니다.

+0

Node.js가 내 포트를 망쳐 놓을 것이며이 시점에서 나를 느리게 할 것이라고 생각합니까? –

+0

node.js와 php는 두 개의 독립적 인 프로세스가 될 것이므로 둘 사이에서 물건을 호출 할 수 없으며 클라이언트 측에서 node.js 함수를 호출 할 수도 없습니다. –

1

응용 프로그램을 더 라이브로 만들려면 setInterval 메서드를 사용해야합니다. 이 프로젝트 사용 Simple php, ajax and mysql chat application.

+0

좋은 프로젝트 남자. 그것은 내가해야 할 일인 것 같습니다. 내 암호로 예제를 가르쳐 주시겠습니까? 작업 스 니펫이 너무 복잡 할 필요가 없습니다. 나는 window.setInterval (function() { $ ("# displayMessage") load ("chat.php"); }, 2000)을 추가하려고 시도했지만, 그것은 내게 정의되지 않은 인덱스 –

+0

을 준다. 곧 예제를 업로드하겠습니다. 그리고 이것이 좋은 대답이라면, 받아들이십시오. –