bonjour,
j'ai une application web de comptabilité que je vais la développer avec angularJS et Symfony2 (pour tout traitement de base de données (MySQL)),je veux ajouter un service clientèle(application de chat en temps réel,l'admin avec ses clients) que je veux réaliser avec NodeJS et les websockets,ma question est que d'après des articles que j'ai lu sur le net nodejs peux accéder à la base de données comme symfony2 pour enregistrer par exemple l'historique des communications,mais comment les 2 peuvent ils se communiquer??j'ai entendu de redis,quel est son rôle?est ce que je dois recréer les opérations de base que j'ai déjà réalisé avec symfony2 encore avec nodeJS
merci pour l'aide

6 réponses


Thebrer
Réponse acceptée

Salut !

Donc pour commencer dis toi bien que si tu fais du websockets avec node.js, cela n'aura aucun rapport avec le PHP ni Symfony donc

accéder à la base de données comme symfony2

n'est tout simplement pas possible. Néanmoins node.js disposent d'une grande communauté et des ORMS pour node.js existent comme par exemple Sequelize : http://docs.sequelizejs.com/en/latest/. Je pense que tu as juste besoin de récupérer l'historique de conversation dans ta base de données, le stocker dans une variable côté script websockets et ajouter les nouveaux messages dans cette variable tout en faisant un push dans ta base de données. Comme cela ton historique est conservé et tu pourras envoyer cette même variable aux utilisateurs qui arrivent sans pour autant faire de requêtes supplémentaires.

Je te propose deux tutoriels pour mener à bien celui-ci, en plus de la doc de l'ORM (si tu souhaites l’utiliser):
http://www.grafikart.fr/tutoriels/nodejs/nodejs-socketio-tchat-366
http://socket.io/get-started/chat/

Côté serveur je vois bien un algorithme comme celui-ci

(lancement du script)

  • Récupération de l'historique des messages en base de données
  • Sauvegarde de ces messages dans un variables messages
  • Lorsqu'un utilisateur arrive, lui envoyer la variable messages
  • à chaque nouveau message, l'ajouter dans la variable messages et faire un insert en base de données
hana005
Auteur

merci Thebrer pour votre réponse ç'a m'éclaire les choses maintenant ^_^

J'ai comme toi voulu essayer de faire un app symfony2 - nodej mais il te faudra créer une api restfull ou recoder la partie effectué par nodejs sur l'app, l'api c'est très chiant à mettre en place, et recoder des bouts sur l'autre partie devient vite très dur à maintenir quand ça évolue.

Le bon compromis est de faire du websocket directement avec symfony2 sans nodejs avec https://github.com/GeniusesOfSymfony/WebSocketBundle et il y a plein de docs en plus. Après si les contraintes ne te dérange pas et que pour toi c'est jouable d'exposer une API ou de dupliquer tu peux rester sur nodejs ça marche exactement pareil.

hana005
Auteur

merci zebulonbof pour votre réponse,mon application est déjà une application rest :)

Pourquoi simplement ne pas faire des appels ajax à ton API sf2? Perso je n'aime pas du tout nodejs pour travailler ma logic métier, et je l'utilise avec sf2 qui sert à récupérer des infos / les persister.

hana005
Auteur

ok merci Emix pour votre réponse :)