PHP聊天客户端 - 服务器通信

时间:2016-02-01 16:20:38

标签: javascript php mysql client-server

我正在制作简单的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或者有更好/更简单的方法来执行此客户端/服务器通信。

1 个答案:

答案 0 :(得分:0)

如果您需要坚持使用PHP,那么我建议您使用long polling。它比现在的解决方案更好,更有效。

您可以在PHP here中找到一个很好的长轮询示例。