Y a trois techno "W3C" qui propose des communication du Serveur vers les Clients Web :
Techno Web Push : Orienté mobile hors ligne
Les moins : taille très limité, infrastructure assez complexe et lié aux API et serveur propriétaires des navigateurs Web/OS mobile (google/apple). Ce pose donc des questions d'indépendance et de pérennité de la solution dans le temps
Le plus : C'est la seul techno qui fonctionne dès que ton navigateur est lancé, que tu soit connecté ou non au site web qui utilise cette techno. (Bref C'est les "Push Notification" adapté au Web).
WebSocket : Socket TCP avec ouverture de connexion en "HTTP/1".
Les plus : Socket "TCP" Full-duplex, tu fais ce que tu veux avec (tu sérialise comme tu veux tes données).
Les moins : Assez bas niveau, tuyauterie à mettre autour. Non compatible avec HTTP/2
Server Sent Event (Spec HTML, pas HTTP): Simplement un "Content-Type" spécifique qui indique que les données doivent etre traité tels quels sans entendre la fin de la reponse complète (HTTP Streaming).
Les plus : HTTP/2 compatible, Super simple à mettre en place, bon support des navigateurs (https://caniuse.com/#feat=eventsource) et on peut mettre en place un polyfill pour ceux qui le supporte pas nativement.
Les moins : text uniquement(UTF8). (Certains diront half-duplex mais vu que c'est compatible http/2 l'overhead de faire des requettes client -> serveur est bien faible par rapport à http/1).
Bref c'est vraiment cool de voir la technologie Server Sent Event redevenir populaire. La spec est claire, simple et efficace, on est sur du http classique donc ça passe partout, compressible si besoin (gzip) etc... Le seul bémol est si on veut faire passer autre chose que du texte.
Elle était passez sous les radars de beaucoup trop de monde, WebSocket lui ayant fait de l'ombre. Le fait que HTTP/2 soit incompatible avec Websocket rebats les cartes.
Quand à Web Push je conseil que pour des cas d'usage très particulier (avoir besoin de faire des push notifications sans avoir besoin d’être connecté au site).
[^] # Re: Mettre à jour les navigateurs ???
Posté par Tangi Colin . En réponse à la dépêche Mercure : un nouveau protocole Web pour mettre à jour les navigateurs en temps réel (« push »). Évalué à 10. Dernière modification le 29 novembre 2018 à 11:22.
Ce que j'en ai compris :
Y a trois techno "W3C" qui propose des communication du Serveur vers les Clients Web :
Techno Web Push : Orienté mobile hors ligne
WebSocket : Socket TCP avec ouverture de connexion en "HTTP/1".
Server Sent Event (Spec HTML, pas HTTP): Simplement un "Content-Type" spécifique qui indique que les données doivent etre traité tels quels sans entendre la fin de la reponse complète (HTTP Streaming).
Bref c'est vraiment cool de voir la technologie Server Sent Event redevenir populaire. La spec est claire, simple et efficace, on est sur du http classique donc ça passe partout, compressible si besoin (gzip) etc... Le seul bémol est si on veut faire passer autre chose que du texte.
Elle était passez sous les radars de beaucoup trop de monde, WebSocket lui ayant fait de l'ombre. Le fait que HTTP/2 soit incompatible avec Websocket rebats les cartes.
Quand à Web Push je conseil que pour des cas d'usage très particulier (avoir besoin de faire des push notifications sans avoir besoin d’être connecté au site).