У меня есть сайт, который разработан с использованием PHPFox v3.0.7.
Сейчас я пытаюсь внедрить SSE (Server Sent Events) в один из файлов PHP. Для справки ниже я приведу только необходимую часть кода файла. Файл называется process.class.php и присутствует на месте /var/www/module/notification/include/service/process.class.php
присутствует на сервере с ip http://34.124.40.142/
,
<?php
/**
* [PHPFOX_HEADER]
*/
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
defined('PHPFOX') or exit('NO DICE!');
/**
*
*
* @copyright [PHPFOX_COPYRIGHT]
* @author Raymond Benc
* @package Phpfox_Service
* @version $Id: service.class.php 67 2009-01-20 11:32:45Z Raymond_Benc $
*/
class Notification_Service_Process extends Phpfox_Service
{
/**
* Class constructor
*/
public function __construct()
{
$this->_sTable = Phpfox::getT('notification');
}
public function add($sType, $iItemId, $iOwnerUserId, $iSenderUserId = null)
{
if ($iOwnerUserId == Phpfox::getUserId()&&$iSenderUserId==null)
{
return true;
}
if ($sPlugin = Phpfox_Plugin::get('notification.service_process_add'))
{
eval($sPlugin);
}
if (isset($bDoNotInsert) || defined('SKIP_NOTIFICATION'))
{
return true;
}
$aInsert = array(
'type_id' => $sType,
'item_id' => $iItemId,
'user_id' => $iOwnerUserId,
'owner_user_id' => ($iSenderUserId === null ? Phpfox::getUserId() : $iSenderUserId),
'time_stamp' => PHPFOX_TIME
);
$this->database()->insert($this->_sTable, $aInsert);
echo "data: The notification is generated". PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
return true;
}
}
?>
Чтобы получить доступ к этому файлу и получить из него данные о событиях (т. Е. Сообщение «Уведомление сгенерировано»), я написал следующий простой HTML-файл с источником в виде process.class.php
:
index.html
<!DOCTYPE html>
<html>
<body>
<h1>Getting server updates</h1>
<div id="result"></div>
<script>
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("http://34.124.40.142/module/notification/include/service/process.class.php");
source.onmessage = function(event) {
alert(event.data);
document.getElementById("result").innerHTML += event.data + "<br>";
};
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script>
</body>
</html>
Но когда я запускаю этот файл в браузере, я получаю следующую ошибку в консоли Firebug:
Firefox не может установить соединение с сервером на http://34.124.40.142/module/notification/include/service/process.class.php.
Теперь кто-нибудь, пожалуйста, помогите мне, рассказав, как я могу сделать этот файл доступным в коде JavaScript, написанном на HTML?
Благодарю.
Задача ещё не решена.
Других решений пока нет …