web-dev-qa-db-fra.com

Comment créer une fonctionnalité de notification Push en temps réel, comme Facebook?

Je vais créer une fonctionnalité de notification push en temps réel pour mon application Web (un petit réseau social) et je ne sais pas par où commencer.

C’est ce que je veux construire: il y a comme des boutons, des formulaires de commentaire, ... Les utilisateurs cliquent sur, écrivent leurs commentaires et (relativement) immédiatement, sur le navigateur du propriétaire indique le nombre de nouveaux "j'aime" et de commentaires, cette.

J'ai lu des articles sur socketIo sur nodeJs, MeteorJS mais malheureusement, ils ont besoin de WebSocket supporté par les navigateurs classiques. Je viens de lire sur la technique Comet et je trouve que c'est assez facile à appliquer. Mais je ne suis pas sûr que tout se passera bien, car Comet s'appuie sur une connexion à longue interrogation (corrigez-moi si je me trompe).

De plus, je pense que Facebook utilise Comet pour sa fonctionnalité de notification Push. À l'aide de la console du plug-in firebug, je peux voir qu'il y a toujours une connexion en attente à Facebook. Alors, est-ce que quelqu'un peut me montrer une technique, un modèle pour développer une telle fonctionnalité?

17
Hieu Pham

Une idée prometteuse consiste à utiliser l'API de notification HTML5. c'est parfait si vous voulez que les notifications apparaissent sur l'écran de l'utilisateur tant que son navigateur est actif (même si vous naviguez sur un autre site Web ou si toutes les fenêtres sont fermées).

http://www.paulund.co.uk/html5-notifications

Toutefois, si vous souhaitez mettre à jour différentes parties de votre page de manière asynchrone (sans actualiser ni appuyer sur un bouton), vous devez utiliser ensemble:

  • Appels Ajax;
  • Auditeurs et observateurs.

Lorsque vous appelez Ajax pour récupérer des types particuliers de données JSON (par exemple), cela peut déclencher l’apparition d’un badge (écouteur) avec un certain nombre de nouvelles notifications, etc.

Avec JQuery installé, ça devrait aller.

Même si ce n'est souvent pas le cas, parfois, pour de simples ajustements, il est plus facile de coder le travail effectué ...

Vous pouvez commencer ici:

Comment implémenter un "observateur" dans Jquery sans plugins? (c'est vieux, mais intéressant)

Ou voir cette page:

Mises à jour instantanées du navigateur avec ajax/jquery

(incroyable à quelle fréquence les requêtes google renvoient des pages de stacko)

17
Bruce BENAMRAN

Vous devriez vérifier MQTT . Il fonctionne essentiellement sur le modèle Publish-Subscribe et est très facile à utiliser. Ce protocole a un faible encombrement et consomme moins de bande passante. Le Messenger de Facebook utilise aussi MQTT.

1
anudroid

vous pouvez utiliser un appel ajax entrant (par exemple) dans un script php sur le serveur, qui maintient la connexion ouverte et ne répond que si quelque chose doit être affiché à l'utilisateur. Si rien ne se passe dans un certain délai, la connexion est fermée et le client déclenche un nouvel appel ajax. notez que ceci ne concerne que la communication client/serveur, vous aurez toujours besoin d'une méthode de notification à l'intérieur du serveur pour activer le script php si vous voulez éviter qu'un script interroge constamment la base de données, mais il y a pas mal d'esprit à cela. et ils dépendent de la langue que vous utilisez sur le serveur.

0
Hugo Walter