Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2019-01-03T12:07:31+01:00Les derniers messages parus sur le forum de Zeste de Savoir.SSE fonctionne en local mais sur ovh ni sur IBM!!, message #1963492019-01-03T12:07:31+01:00Leeroy Jenkins/@Leeroy%20Jenkinshttps://zestedesavoir.com/forums/sujet/11721/sse-fonctionne-en-local-mais-sur-ovh-ni-sur-ibm/?page=1#p196349<p>Bon, j’ai changé d’hébergeur, pour passer sur ibm bluemix.</p>
<p>et la non plus, cela ne fonctionne pas, j’ai par contre un message un peu plus clair</p>
<p>EventSource’s response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection.</p>
<p>une idée?</p>
<div class="custom-block custom-block-information"><div class="custom-block-body"><p><del>j’ai trouvé!!</del></p><p><del>J’ai cru trouver</del> <img src="/static/smileys/pleure.png" alt=":'(" class="smiley"> |</p><p>j’ai trouvé mais sans comprendre <img src="/static/smileys/pleure.png" alt=":'(" class="smiley"> </p><p>Je déclaré mal les headers</p><div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-php"> $response = <span class="hljs-keyword">new</span> Response();
$response->headers->set(<span class="hljs-string">'Content-Type'</span>, <span class="hljs-string">'text/event-stream'</span>);
$response->headers->set(<span class="hljs-string">'Cache-Control'</span>, <span class="hljs-string">'no-cache'</span>);
<span class="hljs-keyword">return</span> $response;
</code></pre></div></div></div>
<p><del>les headers bien déclaré, ca ne me renvoi plus rien…</del> </p>
<p> <del>bon je crois que je vais essayer de trouver autre chose et abandonner SSE…</del> </p>
<p>Bon ben, le temps d’aller manger, sans rien toucher, ca fonctionne impec… j’hésite du coup a trouver une solution de remplacement, je me vois mal planter un service pour une techno capricieuse… </p>SSE fonctionne en local mais sur ovh ni sur IBM!!, message #1945562018-12-10T11:03:23+01:00Leeroy Jenkins/@Leeroy%20Jenkinshttps://zestedesavoir.com/forums/sujet/11721/sse-fonctionne-en-local-mais-sur-ovh-ni-sur-ibm/?page=1#p194556<p>Bonjour,</p>
<p>dsl du retard de réponse</p>
<p>oui c’est le même nom de domaine. </p>
<p>voici en image ce que renvoi la console, entouré en bleu la connexion envoyé quelques secondes après la prise du rdv et donc qui aurait du renvoyer un data :id du rdv</p>
<figure><img src="https://zupimages.net/up/18/50/5086.png" alt="Image utilisateur"><figcaption>Image utilisateur</figcaption></figure>SSE fonctionne en local mais sur ovh ni sur IBM!!, message #1944172018-12-07T18:36:53+01:00Javier/@Javierhttps://zestedesavoir.com/forums/sujet/11721/sse-fonctionne-en-local-mais-sur-ovh-ni-sur-ibm/?page=1#p194417<p>Prend une capture de l’onglet "network" de la console de ton navigateur stp.</p>
<p>On devrait mieux comprendre si la connexion est rejetée, si elle est établie mais que rien ne se passe dedans, etc.</p>SSE fonctionne en local mais sur ovh ni sur IBM!!, message #1944062018-12-07T16:32:52+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/11721/sse-fonctionne-en-local-mais-sur-ovh-ni-sur-ibm/?page=1#p194406<p>Ton front et ton back sont sur le même domaine ? C’est peut-être un problème de cross-origin.</p>SSE fonctionne en local mais sur ovh ni sur IBM!!, message #1944042018-12-07T16:15:09+01:00Ymox/@Ymoxhttps://zestedesavoir.com/forums/sujet/11721/sse-fonctionne-en-local-mais-sur-ovh-ni-sur-ibm/?page=1#p194404<p>Salut !</p>
<p>Si la connexion SSE « ne renvoie pas le data », qu’est-ce qui est retourné à la place ?</p>SSE fonctionne en local mais sur ovh ni sur IBM!!, message #1943762018-12-07T09:45:12+01:00Leeroy Jenkins/@Leeroy%20Jenkinshttps://zestedesavoir.com/forums/sujet/11721/sse-fonctionne-en-local-mais-sur-ovh-ni-sur-ibm/?page=1#p194376<p>Bonjour,
je déploie mon site ce jour sur un hébergement ovh.<br>
j’ai tout testé en local tout est ok, sur ovh tout est KO.</p>
<p>en clair, j’ai une page planning qui doit afficher se mettre à jour au fur et a mesure que les clients prennent rendez-vous.
concrètement, j’ai une entity rendez-vous et une entity SSE.
l’entity SSE s’incrémente lorsque la prise du rendez-vous est aujourd’hui avec l’id du planning, l’id du rendez-vous et un état (null par défaut)</p>
<p>voici le code sur la page planning qui intérroge la méthode SSEAction</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-js"><script>
$(<span class="hljs-built_in">document</span>).ready(<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-comment">//server sent </span>
<span class="hljs-keyword">if</span>(<span class="hljs-keyword">typeof</span>(EventSource) !== <span class="hljs-string">"undefined"</span>) {
<span class="hljs-keyword">var</span> source = <span class="hljs-keyword">new</span> EventSource(<span class="hljs-string">"{{ path('SSE', {'id': planning.id, 'date': date|date("</span>d-m-Y<span class="hljs-string">") }) }}"</span>);
source.addEventListener(<span class="hljs-string">'message'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>) </span>{
{# <span class="hljs-keyword">if</span> (e.origin ==<span class="hljs-string">"http://{{ app.request.server.get('SERVER_NAME') }}"</span>) { #}
source.onmessage = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">event</span>) </span>{
<span class="hljs-keyword">if</span>(event.data != <span class="hljs-string">"null"</span>){
<span class="hljs-built_in">console</span>.log(event.data);
<span class="hljs-keyword">var</span> audio = <span class="hljs-keyword">new</span> Audio(<span class="hljs-string">'{{ asset("son/msg.mp3") }}'</span>);
<span class="hljs-keyword">var</span> promise = audio.play();
<span class="hljs-keyword">if</span> (promise !== <span class="hljs-literal">undefined</span>) {
promise.then(<span class="hljs-function"><span class="hljs-params">_</span> =></span> {
<span class="hljs-comment">// Autoplay started!</span>
}).catch(<span class="hljs-function"><span class="hljs-params">error</span> =></span> {
<span class="hljs-comment">// Autoplay was prevented.</span>
<span class="hljs-comment">// Show a "Play" button so that user can start playback.</span>
});
}
idrdv = event.data;
msg = <span class="hljs-string">"Nouveau rendez-vous positionné dans votre planning"</span>;
<span class="hljs-keyword">if</span> (!(<span class="hljs-string">"Notification"</span> <span class="hljs-keyword">in</span> <span class="hljs-built_in">window</span>)) {
alert(<span class="hljs-string">"Ce navigateur ne supporte pas les notifications desktop"</span>);
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (Notification.permission === <span class="hljs-string">"granted"</span>) {
<span class="hljs-keyword">var</span> notification = <span class="hljs-keyword">new</span> Notification(msg);
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (Notification.permission !== <span class="hljs-string">'denied'</span>) {
Notification.requestPermission(<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">permission</span>) </span>{
<span class="hljs-keyword">if</span>(!(<span class="hljs-string">'permission'</span> <span class="hljs-keyword">in</span> Notification)) {
Notification.permission = permission;
<span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"snackbar-container"</span>).innerHTML = <span class="hljs-string">' <div class="snackbar error fadeOut">Vous avez desactiver les notifications windows</div>'</span>;
}
<span class="hljs-keyword">if</span> (permission === <span class="hljs-string">"granted"</span>) {
<span class="hljs-keyword">var</span> notification = <span class="hljs-keyword">new</span> Notification(msg);
}
});
}
{# <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"snackbar-container"</span>).innerHTML = <span class="hljs-string">' <div class="snackbar notice fadeInUp"></div>'</span>; #}
majRdv(idrdv);
}
};
{# } #}
});
} <span class="hljs-keyword">else</span> {
<span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"snackbar-container"</span>).innerHTML = <span class="hljs-string">' <div class="snackbar error fadeOut">Désolé, votre browser n\'est pas supporté</div>'</span>;
}
});
</code></pre></div>
<p>la méthode SSEAction</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-php"><span class="hljs-comment">/**
* server sent
* <span class="hljs-doctag">@param</span> integer [$id] identifiant du planning
* <span class="hljs-doctag">@param</span> date $date la date en francais 05-11-2018
* <span class="hljs-doctag">@return</span>
*/</span>
<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">SSEAction</span><span class="hljs-params">(Request $request, $id, $date)</span></span>{
$session = $request->getSession();
$em = <span class="hljs-keyword">$this</span>->getDoctrine()->getManager();
header(<span class="hljs-string">'Content-Type: text/event-stream'</span>);
header(<span class="hljs-string">'Cache-Control: no-cache'</span>);
$planning = $em->getRepository(<span class="hljs-string">'AppBundle:Planning'</span>)->find($id);
$rdvs = $em->getRepository(<span class="hljs-string">'AppBundle:SSE'</span>)->findBy(<span class="hljs-keyword">array</span>(<span class="hljs-string">'planning'</span>=>$planning, <span class="hljs-string">'etat'</span>=><span class="hljs-keyword">null</span>));
<span class="hljs-keyword">if</span>($rdvs){
<span class="hljs-keyword">foreach</span>($rdvs <span class="hljs-keyword">as</span> $rdv){
<span class="hljs-keyword">echo</span> <span class="hljs-string">"data: {$rdv->getRendezvous()->getId()} \n\n"</span>;
$rdv->setEtat(<span class="hljs-number">1</span>);
}
} <span class="hljs-keyword">else</span> {
<span class="hljs-keyword">echo</span> <span class="hljs-string">"data:null\n\n"</span>;
}
flush();
$em->flush();
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Response();
}
</code></pre></div>
<p>dans la console j’ai bien mon retour comme quoi il n’y a pas de nouveaux rendez-vous mais lorsqu’un rendez-vous se positionne, la base de donnée ce met à jour (on met 1 à la place de null dans l’etat de la table SSE) mais la connexion SSE ne me renvoi pas le data.</p>