0) ob_end_flush(); flush(); if(connection_status() != CONNECTION_NORMAL || connection_aborted()) { //TODO: this does not seem to be triggered XConfig::Set(self::$ob_hash, 'sse', 'timestamp', NULL_DATE); break; } sleep($sleep_seconds); } } else { // Fallback to traditional polling if(! self::$sse_id) { // Update chat presence indication $r = q("select cp_id, cp_room from chatpresence where cp_xchan = '%s' and cp_client = '%s' and cp_room = 0 limit 1", dbesc(self::$ob_hash), dbesc($_SERVER['REMOTE_ADDR']) ); $basic_presence = false; if($r) { $basic_presence = true; q("update chatpresence set cp_last = '%s' where cp_id = %d", dbesc(datetime_convert()), intval($r[0]['cp_id']) ); } if(! $basic_presence) { q("insert into chatpresence ( cp_xchan, cp_last, cp_status, cp_client) values( '%s', '%s', '%s', '%s' ) ", dbesc(self::$ob_hash), dbesc(datetime_convert()), dbesc('online'), dbesc($_SERVER['REMOTE_ADDR']) ); } } XConfig::Load(self::$ob_hash); $result = XConfig::Get(self::$ob_hash, 'sse', 'notifications', []); $lock = XConfig::Get(self::$ob_hash, 'sse', 'lock'); if($result && !$lock) { XConfig::Set(self::$ob_hash, 'sse', 'notifications', []); json_return_and_die($result); } killme(); } } }