[gull] JavaScript et Opera (Was: Moniteur SVG animés en Server-Push)

Félix Hauri felix at f-hauri.ch
Mon Nov 24 10:29:59 CET 2008


On Mon, Nov 24, 2008 at 12:27:46AM +0100, Marc Mongenet wrote:
> mais le DOM est encore loin de tout couvrir, et ce qui est
> couvert par les recommandations DOM n'est pas forcément
> implémenté par les navigateurs...
Cela fait plus de dix ans que j'ai compris ce genre de concepts
et je constate que c'est toujours d'actualité...

>... 
> > J'ai lu des truc qui parlent d'une ``technologie nouvelle'' dans la
> > version 9, il s'agit de ``Server-Sent Events'', mais la page en question:
> > http://www.whatwg.org/specs/web-apps/current-work/#scs-server-sent
> > pèse qqch comme 27'500 lignes ou 1.5Mo de texte!
> 
> Intéressant, je ne connaissais pas. Je déduis de
> http://en.wikipedia.org/wiki/Push_technology#HTTP_server_push
Intéressant. Je dirais que dans l'ordre de priorité, j'aimerais
voir mon moniteur tourner sur
 - Mozilla et dérivés                              : Ok
 - Opera (téléphones portables et autres embarqués : Vite
 - Safari (pour les utilisateurs Mac sans Firefox) : Bientôt
 - Konqueror (pour les utilisateurs de KDE sans Ff): Bientôt
 - IE (pour les utilisateurs imprudents)           : M'en fiche.

> que seul Opera l'a implémenté (en 2006). Voir
> http://my.opera.com/WebApplications/blog/show.dml/438711
> pour de la doc plus légère.
Merci.
Pas sûr de comprendre, mais je vais m'y pencher...

> Selon le même article de Wikipédia, le type de server push que
> tu as utilisé (appelons-le multipart/x-mixed-replace pour être
> précis) vient de Netscape en 1995, et est assez largement
> supporté, sauf par MSIE.
M'oui, cela fait plus de 5 ans que je m'amuse avec le nph (server-push 
multipart/x-mixed-replace), avec des scripts comme:
http://www.f-hauri.ch/cgi-bin/nph-ping?host=localhost
http://www.f-hauri.ch/vrac/ActiveBG/index.html

> Cependant, l'usage de multipart/x-mixed-replace avec
> XMLHttpRequest pourrait bien être une spécialité de Mozilla.
> Le W3C Working Draft sur XMLHttpRequest
> http://www.w3.org/TR/XMLHttpRequest/ n'évoque pas de "multipart".
Effectivement la plupart des doc concernant ce genre d'opération
mentionne: ``Mozilla only''.

> Essaie sur différents navigateurs le code disponible à
> http://ajaxref.com/ch3/multipart.html
> car il me semble bien pour indiquer si le multipart est supporté.
> D'après l'avertissement en haut de page, seul Firefox le supporte...
CQFD

> > Appel lancé aux connaisseurs de Javascript/Ecmascript, et/ou
> > de Opera.
> On peut craindre qu'il n'existe pas de solution en dehors de
> l'Ajax classique.
Oui, ou une série de ``if'' pour générer deux routines (request
 et bind) voire avec utilisation de ``window.setTimeout'' pour
générer des requêtes classiques (GET voire HEAD) en fonction du 
navigateur...

Et coté serveur, au moins trois scripts: un nph-push, un sent-event-push
et un one-shot-readvals.

L'utilisation d'Ajax risque de m'affranchir de cette étape, mais
les scripts générés seront plus lourds...

> Le risque est que ça crée une connexion TCP par seconde,
Fonction du navigateur. De toutes façons, si j'en arrive là,
une page d'explication précisera les raisons des choix
technologiques et listera les navigateurs supportés avec
un indicateur de ``bon choix''.

> mais peut-être que le HTTP Keep-Alive, qui est
> tout de même largement supporté par les serveurs et les
> navigateurs, permettra de réutiliser la même connexion
> pour toutes les requêtes.
(Et le proxys), mais cela compliquera l'écriture des scripts,
et si on arrive à raccourcir les headers de part et d'autres,
le traffic global sera tout de même largement plus important
ne serait-ce que parce que la requête doit être reformulée
(via un ``window.setTimeout'') bref, ce n'est plus du push.

Mais tu as probablement raison: pour les navigateurs ne
supportant ni nph-server-push, ni server-sent-event, le
keep-alive pourra ``grappiller'' des octets de bande
passante.

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch



More information about the gull mailing list