每次将新消息插入DB(MySQL)

时间:2017-11-10 06:40:09

标签: javascript php

我一直在网上搜索每次从其他聊天用户收到新消息时刷新聊天<div>的代码。我读过有关setTimeout()setInterval()但需要更多有经验的开发人员的建议和帮助。

最好的例子是这个网站。除非您刷新浏览器,否则您不会立即看到通知。我想最好的例子是facebook。每当更新数据库时,都会立即弹出通知而不刷新浏览器。

这是我的代码。

$check_sql = ("SELECT time from messages where conversation_id = '".$con_id."' ");
$check_query = mysqli_query($con, $check_sql) or die ("ERROR checking:".mysqli_error($con);
while($row = mysqli_fetch_assoc($check_query){
  $current_time = date_default_timezone_get();
  $message_time_sent = $row['time'];
  $cal = $message_time_sent->diff($current_time);
  $ans = $cal->format("%D %H:%i:%s");
  sscanf($ans,"%d %d:%d:%d ", $day, $hr, $min, $sec);

  if (($day == 0) && ($hr == 0) && ($min == 0) && ($sec >0)){
   //do something here to get receive message automatically and notification....
 }

我想要实现的目标:

  1. Facebook会在不刷新浏览器的情况下自动接收消息。我希望它可能是这样的。
  2. 自动弹出通知而不刷新浏览器我觉得这不重要,一旦我们弄清楚第1项,那么其余的都会很好。
  3. 使用setInteval()浏览器的棘手部分将继续刷新<div>聊天,因此当用户输入要发送的文本时,每次刷新时它都会消失。请原谅我的英语......

    那么,有没有一种正确的方法来处理这个....

1 个答案:

答案 0 :(得分:0)

setInterval - 设置间隔将在您设置的每个间隔调用您的函数

setInterval示例:https://repl.it/OE1o

<html>
<body>
    <div id="sample">
        Day Mon DD YYYY HH:MM:SS GMT+XXX (Time Zone)
    </div>
</body>
</html>

<script>
var sample = document.getElementById('sample');
setInterval(
    // Here is where to do things like dom manipulation
    function() {
        sample.innerHTML = new Date;
    },

    // Here is where you set the interval asuming I want to update every 1 second
    1000
);
</script>

setTimeout - 一旦达到超时就会调用。

setTimeout示例:https://repl.it/OE3H

setTimeout(
    // This function will be called once the timeout is reached
    function() {
        console.log('Hello World');
    },

    // The timeout is 5 seconds
    5000
);