我今天将网站部署在ovh托管上。 在localhost上一切正常,但在ovh上是KO。
我有一个日程安排页面,客户预约时必须更新该页面。
具体来说,我使用的是symfony 3.4,并且我有一个实体集合点和一个实体SSE。 当今天的约会带有计划ID,约会ID和状态(默认为空)时,SSE实体会增加
这是时间表页面上查询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如果没有约会,但是在约会被定位后,返回ok,数据库将更新(我们在SSE表的状态中输入1而不是null),但是SSE连接不会向我发送数据。
提前向我们寻求帮助