admin管理员组

文章数量:1287885

I am using HTML5 Server-Sent Events.

Actually I need to show notification (new record enter and which are unread) that's when any new record is insert in database (php/mysql).

So for testing purpose I just tried with count of total row. But I am getting this error message in my local-host:

Firefox can't establish a connection to the server at http://localhost/project/folder/servevent/demo_sse.php.

The line is:

var source = new EventSource("demo_sse.php");

I have tried this:

index.php

<script>
if(typeof(EventSource) !== "undefined") {
    var source = new EventSource("demo_sse.php");
    source.onmessage = function(event) {
        document.getElementById("result").innerHTML = event.data;
    };
} else {
    document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script> 
<div id="result"></div> 

demo_sse.php

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$db = mysql_connect("localhost", "root", ""); // your host, user, password
  if(!$db) { echo mysql_error(); }
$select_db = mysql_select_db("testdatase"); // database name
  if(!$select_db) { echo mysql_error(); }

$time = " SELECT count( id ) AS ct FROM `product` ";
$result = mysql_query($time);
$resa = mysql_fetch_assoc($result);
echo $resa['ct'];
flush();
?> 

Please let me know what going wrong.

I know for notification we can use Ajax with some interval time, but I don't want such thing. As I have N number of records and which may slow my resources.

I am using HTML5 Server-Sent Events.

Actually I need to show notification (new record enter and which are unread) that's when any new record is insert in database (php/mysql).

So for testing purpose I just tried with count of total row. But I am getting this error message in my local-host:

Firefox can't establish a connection to the server at http://localhost/project/folder/servevent/demo_sse.php.

The line is:

var source = new EventSource("demo_sse.php");

I have tried this:

index.php

<script>
if(typeof(EventSource) !== "undefined") {
    var source = new EventSource("demo_sse.php");
    source.onmessage = function(event) {
        document.getElementById("result").innerHTML = event.data;
    };
} else {
    document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script> 
<div id="result"></div> 

demo_sse.php

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$db = mysql_connect("localhost", "root", ""); // your host, user, password
  if(!$db) { echo mysql_error(); }
$select_db = mysql_select_db("testdatase"); // database name
  if(!$select_db) { echo mysql_error(); }

$time = " SELECT count( id ) AS ct FROM `product` ";
$result = mysql_query($time);
$resa = mysql_fetch_assoc($result);
echo $resa['ct'];
flush();
?> 

Please let me know what going wrong.

I know for notification we can use Ajax with some interval time, but I don't want such thing. As I have N number of records and which may slow my resources.

Share Improve this question edited Sep 4, 2014 at 3:03 JasonMArcher 15k22 gold badges59 silver badges53 bronze badges asked Aug 6, 2014 at 8:40 user3209031user3209031 8351 gold badge14 silver badges39 bronze badges 3
  • i check my query is working fine.. its resulting me count of 5 , as in my table there is 5 record .. but dont know why its not showing with server side events – user3209031 Commented Aug 6, 2014 at 9:03
  • Did you know what was the problem? – Nejthe Commented Feb 24, 2016 at 15:36
  • no...actually i forget to test on this module ... – user3209031 Commented Mar 4, 2016 at 10:37
Add a ment  | 

3 Answers 3

Reset to default 7

According to this,

There are several 'rules' that need to be met, and yours is lacking at this point:

  • Output the data to send (Always start with "data: ")

It is somehow like:

echo "data: {$resa['ct']}\n\n"; 

Setting a header to text/event-stream worked for me:

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

// Rest of PHP code

Please modify the following code snippet according to your requirements

<?php

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

// infinite loop
while (1) {
    // output the current timestamp; REPLACE WITH YOUR FUNCTIONALITY
    $time = date('r');
    echo "data: Server time: {$time}\n\n"; // 2 new line characters

    ob_end_flush();
    flush();
    sleep(2); // wait for 2 seconds
}

?>

I tested this code snippet myself; it's working for me. If you have any query, let me know.

本文标签: javascriptServer Sent EventsNot workingStack Overflow