Lato server
codice:
<?php
header("Content-Type: text/event-stream\n\n");
require '../settings.php';
include ('../../include/conn_db_mysqli.php');
session_start();
secure_session();
$g_session_id = $_SESSION['session_id'];
while (true)
{
$current_msg=getLastCheckedMsg($conn2,$g_session_id);
sleep(1);
echo "data: messaggi ".$current_msg." \n\n";
// This will ensure our data is sent provided you set this
// in your php.ini:
// output_buffering = off
ob_flush();
flush();
}
function getLastCheckedMsg($conn2,$g_session_id){
$table='tblutenti';
$fields="messaggi";
$condition=array("id" => $g_session_id);
$message=db_read_tbl_opAND($table, $fields, $condition);
return $message;
}
lato client
codice:
document.addEventListener("DOMContentLoaded", function() {
var eventSrc = new EventSource( "core/dynamic_call/something_is_incoming_SSE.php" ),
handler = function( event ) {
console.log( [ event.type, new Date(), event, event.data ] );
},
getReadyState = function( src ) {
if ( src.readyState ) {
// readyState is almost always 0, we're only interested in
// seeing readyState OPEN (1) ( or CLOSED (2) )
console.log( [ src.readyState, new Date() ] );
}
setTimeout(function() {
getReadyState( src );
}, 20000);
};
console.log( eventSrc );
// Setup event handlers
[ "open", "message" ].forEach( function( name ) {
eventSrc.addEventListener( name, handler, false );
});
// Begin sampling the ready state
getReadyState( eventSrc );
}, false);
FUNZIONA ALLA GRANDE!
adesso lo rendo compatibile con gli altri browser
grazie infinite