2016-02-01 112 views
0

我正在做簡單的php webChat和使用MySQL數據庫。我的通信基於AJAX請求,當有人發佈消息時,它將被保存。PHP聊天客戶端 - 服務器通信

function sendData(){ 

var textData = $('#chatText').val(); 
console.log(textData); 
$.ajax({ 
     type:'POST', 
     url:'saveMessage.php', 
     data: { 
       message:textData 
     }, 
     dataType: 'text', 
     success: function(data){ 
       $('#sendInfo').html(data); 
     }, 
     error: function(/*jqXHR, exception"*/ts){ 
       $('#sendInfo').html("Error send" + ts.responseText); 
     }  
}); 

} 消息由另一個請求,那裏有被設定,它是發送的服務器請求每1秒的計時器從數據庫加載。

$(document).ready(function(){ 
    setInterval(check, 1000); 


}); 

function check(){ 

    $.ajax({ 
     type:'GET', 
     url:'checkMessages.php', 
     dataType:'json', 
     success: function(result){ 
      //$("#messageBox").append(result); 

      for(var i in result){ 
       $("#messageBox").append(result[i].email + ": " + result[i].mesgVal + "<br>"); 
      } 
     }, 
     error: function(/*jqXHR, exception"*/ts){ 
       $('#sendInfo').html("Error check " + ts.responseText); 
      } 
    }); 
} 

由於客戶端到服務器的請求次數很多,此方法很糟糕。我尋找了更好的解決方案,並且發現了webSockets(WS)。我的問題是,我正在使用webHosking,我只找到LOCAL HOST教程。例如this

所以我問是否有一種方法可以通過web上的WS來實現,或者有更好/更簡單的方法來完成這個客戶端/服務器通信。

+0

你可以通過socket.io在你的前端和你的後端之間設置一個常量。你可以在這個鏈接中找到更多關於如何在PHP中實現它的信息http://stackoverflow.com/questions/6398887/using-php-with-socket-io –

回答

0

如果你需要堅持使用PHP,那麼我會建議使用long polling。這是比現在更好,更有效的解決方案。

您可以在PHP here中找到一個長輪詢的好例子。