2017-02-23 57 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