我正在制作简单的 php webChat 并使用 MySQL 数据库。我的通信基于 AJAX 请求,当有人发布消息时,它将被保存。
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 .
所以我问是否有一种方法可以在 webHosting 上使用 WS 来实现,或者有更好/更简单的方法来进行此客户端/服务器通信。
最佳答案
如果您需要坚持使用 PHP,那么我建议使用 long polling 。这是一个比当前解决方案更好、更有效的解决方案。
您可以在 PHP 中找到一个很好的长轮询示例 here .
关于javascript - PHP聊天客户端-服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135286/