1

Je suis en train de créer une application Web où les utilisateurs peuvent s'inscrire, ajouter des flux twitters qu'ils souhaitent suivre et leur flux sera mis à jour au fur et à mesure qu'ils recevront de nouveaux messages.Comment obtenir des mises à jour en temps réel dans une application Laravel

Mon aller à la plate-forme est Laravel. Cependant, je ne peux pas penser à la meilleure façon d'implémenter l'aspect de mise à jour en direct du site.

J'utiliserais une fonction AJAX qui est appelée périodiquement (toutes les 30 secondes par exemple) mais comme le nombre d'utilisateurs augmente cette méthode car c'est un inconvénient.

J'ai regardé dans HTML5 Server Side Events mais IE n'est pas supporté malheureusement.

Quelle serait la meilleure façon d'implémenter cette fonctionnalité dans une application Laravel?

Merci,

Nick

+0

Je voudrais aller avec Node.js et serveur pour pousser client .. – opHASnoNAME

+0

Merci pour le commentaire. Je cherche à utiliser Node avec Laravel. En théorie, je comprends comment faire passer des messages (dans ce cas, des tweets) à un modèle laravel en utilisant Node. Je veux que les utilisateurs soient gérés dans l'application Laravel et que ce soit ici qu'ils choisiront les flux Twitter qu'ils veulent suivre.Comment faire pour que le noeud sache quels sont les utilisateurs intéressés par les flux et la mise à jour de leur page avec les tweets qu'ils ont sélectionnés (plutôt que de mettre à jour globalement tout le monde avec les mêmes données de Node)? – nvaughan84

+0

juste un peu pensé: installer une base de données, partagez-le avec l'application node.js. Hmm semble être un projet intéressant pour mon temps de repos;) – opHASnoNAME

Répondre

3

Vous avez deux options:

  1. streaming (Websockets)
  2. vote longue

Vous pouvez en savoir plus sur websockets ici: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

Et vous pouvez en savoir plus sur longue interrogation ici: https://www.quora.com/Why-would-HTTP-long-polling-be-used-instead-of-HTTP-Streaming-to-achieve-real-time-push-notifications

En bref:
websockets courent sur un port différent de votre application habituelle , donc accéder à tous vos actifs peut être un peu étrange (selon l'architecture de votre système).

L'interrogation longue est une requête http très longue pouvant durer plusieurs minutes. Au lieu d'envoyer une requête toutes les 30 secondes, vous l'envoyez chaque fois que le serveur renvoie une réponse. Cela signifie que si le serveur a pris 5 minutes pour retourner une réponse, vous n'envoyez une requête qu'une fois par 5 minutes. (par exemple, il n'y a aucune raison d'alerter le client que rien n'a changé du tout, donc vous pouvez dormir (30) et essayer à nouveau)

En note, sauf si vous avez besoin de données en temps réel, je pense que la longue interrogation est beaucoup plus facile à mettre en œuvre et à utiliser avec un cadre tel que laravel.

+0

Merci pour la réponse. Will Long Polling aura un impact sur le serveur. Si il y avait 1000 utilisateurs sur le site en même temps cela causerait-il des problèmes pour Apache? – nvaughan84

+0

Hey - C'était assez bon pour facebook à l'époque (je pense qu'ils ont changé à quelque chose d'autre maintenant, dépend de la taille que vous voulez mettre à l'échelle). https://www.facebook.com/note.php?note_id=14218138919 – Patrick

+1

Un autre message peut-être utile - http://serverfault.com/questions/562701/how-to-scale-up-a-web-server -supporting-long-polling – Patrick