Bonjour @tous,

J'ai envie de créer ou intégrer un module Message (Chat instantané sans rafraichissement de page) et Discussion instantanée (Statut utilisateurs connecté) dans mon projet existant en Symfony.
J'ai déjà utiliser le template twig dans mon projet. Est-ce qu'il est possible de faire le chat box instantanée svp mes amis ?

Aidez-moi s'il y a quelqu'un le sait ou a une proposition ?

@Grafikart

4 réponses


Hello :)

Alors Symfony c'est un framework backend, alors tu ne peux pas faire de chat uniquement avec Symfony et Twig

Tu dois installer une librairie JS par ex ReactJS + Socket.IO si tu es habitué à react

Perso j'utiliserais StimulusJS + Turbo (avec les streams qui fonctionnent avec les sockets) https://hotwired.dev il faut aussi que tu utilises la lib turbo de symfony pour retourner des reponses turbo depuis l'api controller: https://symfony.com/bundles/ux-turbo/current/index.html

Une fois la mise en place de base installée, la partie qui va t'intéresser ce sera https://symfony.com/bundles/ux-turbo/current/index.html#coming-alive-with-turbo-streams qui sert à envoyer les updates (les réponses du chat) au client

Ensuite si tu comptes publier le chat il faut que tu encryptes la conversation, bon pour ça utilise le système d'encryption de base de Symfony tu push en base de données avec Crypt::encrypt, tu récupères avec Crypt::decrypt, tout simple :p

Et je te recommandes d'utiliser un nosql en memoire, plus rapide, soit Redis, soit DynamoDB (Amazon)

Bonjour,

Merci mais avez-vous déjà un repos sur github pour ton projet chat afin de m'aider le plus rapide si possible ?
Enfin, pour le projet existant en Twig, l'installation du Turbo ne le perturbe pas? Je le veux juste pour le chat.

Merci d'avance !

tu peux regarder du coté des Server-Sent Event, il te faudra faire un peu de js front mais ce sera en majeur partie Symfony qui gerera. Si besoin de plus d'infos j'en ai deja mis en place.

Bonjour,

Pour la partie front, effectivement ça passera par du js.
Pour le back, tu peux regarder du coté de mercure, qui s'intègre à symfony via un bundle.