Сегодня я размещаю свой сайт на ovh хостинге.На localhost все нормально, но на ovh это KO.
У меня есть страница расписания, которая должна обновляться, когда клиенты назначают встречу.
Конкретно, я на Symfony 3.4, и у меня естьобъект рандеву и субъект SSE.сущность SSE увеличивается, если сегодня назначена встреча с идентификатором расписания, идентификатором встречи и состоянием (по умолчанию null)
вот код на странице расписания, который запрашивает метод SSEAction
$(document).ready(function(){
//server sent
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("{{ path('SSE', {'id': planning.id, 'date': date|date("d-m-Y") }) }}");
source.addEventListener('message', function(e) {
{# if (e.origin =="http://{{ app.request.server.get('SERVER_NAME') }}") { #}
source.onmessage = function(event) {
if(event.data != "null"){
console.log(event.data);
var audio = new Audio('{{ asset("son/msg.mp3") }}');
var promise = audio.play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay started!
}).catch(error => {
// Autoplay was prevented.
// Show a "Play" button so that user can start playback.
});
}
idrdv = event.data;
msg = "Nouveau rendez-vous positionné dans votre planning";
if (!("Notification" in window)) {
alert("Ce navigateur ne supporte pas les notifications desktop");
} else if (Notification.permission === "granted") {
var notification = new Notification(msg);
} else if (Notification.permission !== 'denied') {
Notification.requestPermission(function (permission) {
if(!('permission' in Notification)) {
Notification.permission = permission;
document.getElementById("snackbar-container").innerHTML = ' <div class="snackbar error fadeOut">Vous avez desactiver les notifications windows</div>';
}
if (permission === "granted") {
var notification = new Notification(msg);
}
});
}
{# document.getElementById("snackbar-container").innerHTML = ' <div class="snackbar notice fadeInUp"></div>'; #}
majRdv(idrdv);
}
};
{# } #}
});
} else {
document.getElementById("snackbar-container").innerHTML = ' <div class="snackbar error fadeOut">Désolé, votre browser n\'est pas supporté</div>';
}
});
Метод SSEAction
/**
* server sent
* @param integer [$id] identifiant du planning
* @param date $date la date en francais 05-11-2018
* @return
*/
public function SSEAction(Request $request, $id, $date){
$session = $request->getSession();
$em = $this->getDoctrine()->getManager();
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$planning = $em->getRepository('AppBundle:Planning')->find($id);
$rdvs = $em->getRepository('AppBundle:SSE')->findBy(array('planning'=>$planning, 'etat'=>null));
if($rdvs){
foreach($rdvs as $rdv){
echo "data: {$rdv->getRendezvous()->getId()} \n\n";
$rdv->setEtat(1);
}
} else {
echo "data:null\n\n";
}
flush();
$em->flush();
return new Response();
}
console.log возвращает нормально, если нет встречи, но при назначении встречи база данных обновляется (мы помещаем 1 вместо нуля в состояние таблицы SSE)но соединение SSE не отправляет мне данные.
спасибо за помощь