检查数据库上的新消息

时间:2019-02-02 06:54:50

标签: javascript php jquery

首先,我为我的英语不好对不起。我来自斯里兰卡,我的英语不好。我正在尝试创建一个聊天站点。但我在检查m =新消息时遇到问题。我使用了jQuery setInterval()和ajax来检查消息。

function chat() {
    var fid = $('#send').data('id');
    $.ajax({ url: "php/control/chat.php", type: 'post', dataType: 'json', data: { fid: fid }, success: function (obj) {
            if(obj){
                browser.find('.chat-view .seen').hide();
                browser.find('.user-chat .chat-view').append(function () {
                    var msgs = '';
                    for( var i = 0; i < obj.length; i++) {
                        msgs += '<div class="user u2 d-flex flex-row">' +
                                  '   <span class="msg">' +
                                  '   <span class="text">' + obj[i].msg + '</span>' +
                                  '       <span class="time">' + nowTime(obj[i].sent) + '</span>' +
                                  '   </span>' +
                                  '</div>';
                    }
                    return msgs;
                });
                browser.find('.chat-view').animate({scrollTop:browser.find('.chat-view')[0].scrollHeight});
            }
        }
    });
}

setInterval(function () {
    if(browser.find('div.chat-view').hasClass('chat-view') && browser.css('display') == 'block') {
        chat();
    }
}, 500);

我设置为在没有新消息减少数据使用量时从php答复0。这很好。但是,当没有消息它仍然使用370个字节用于1个回复及其约45KB一分钟。

我在chrome inspect中检查了facebook,发现他们正在使用一种将请求发送到服务器并等待新消息或通知的方法。服务器仅在有新内容时才对该请求进行回复。我尝试使用php sleep()函数,但我认为这可能会导致对服务器的DoS攻击。我无法检查WAMP,因为它一次只允许一个请求。如果有人知道如何等待请求而不会导致服务器卡死,请帮助我。

0 个答案:

没有答案