2017-02-23 39 views
1

可能過於寬泛的問題,但我會問它不管怎麼說..的setInterval當新的內容被添加

所以我做了我自己的PHP知識聊天應用程序,我得到它也因爲即時通訊的設置工作,但間隔顯示我的消息在第10秒它竊取了很多帶寬。所以我想知道...

  • 有沒有一種方法來setInterval每當我的數據庫添加新消息?
  • 或者你也許有其他方式知道我應該解決這個問題嗎?

這裏是我想出迄今

<?php 
include "connect.php"; 
$query = "SELECT * FROM messages ORDER BY id ASC"; 
$result = $con->query($query); 
if($result){ 

while($row = $result->fetch_object()) 
{ 
    echo '<div id = "hehe">'; 
    echo '<div class = "userpic"><img src = "'.$row->userpic.'" class = "userpic"></div>'; 
    echo "<ul id = 'rutor'>"; 
    if (isset($row->displayname) && !empty($row->displayname)) { 
     echo '<li class = "userlada">'.$row->displayname. "</li>"; 
    } 
    else{ 
     echo '<li class = "userlada">'.$row->username. "</li>"; 
    } 
    echo '<li class = "usertext">'.$row->message. "</li>"; 
    echo "</ul>"; 
    echo "</div>"; 
    }  
} 
?> 

我區間功能來查看消息

setInterval(function() { 
$(".chatMessages").load("getMeddelanden.php"); 
}, 10000); 
+1

代替'setInterval'(本質上是輪詢),你應該查找['WebSocket'](http://crossbario.com/blog/Websocket-Why-What-Can-I-Use-It/) –

+0

@BlazeSahlzen插座似乎太好了,謝謝你的回答!我會看到如果我能夠使用它 –

+0

檢查我的答案 –

回答

1

有沒有辦法給setInterval每當新的消息是添加到我的數據庫?

要將新消息添加到數據庫(服務器)時通知客戶端,您需要使用WebSocket將數據推送到客戶端。

setInterval做什麼被稱爲輪詢,它反覆調用服務器以查看是否添加了新消息,如果是,則檢索它。

或者也許任何其他方式你們有些人知道我應該解決這個問題?

據我所知,使用WebSocket是最好的方法去做。還有一些技術可用於使您的工作更輕鬆,如socket.io,PubNub & MQTT

相關問題