Salut,
Actuellement je lutte pour avoir du pubsub, push, notifications sans longpolling
Pas besoin d’utiliser du Node. Faire une application asyncio
peut résoudre ton problème. Pour le push, les notifications et le pubsub, tu peux simplement utiliser faire un serveur Websocket avec Quart. Quart est un port de Flask qui est compatible avec asyncio
(pour convertir une application Flask, il suffit globalement d’ajouter des async
devant les définitions de fonctions et des await
devant la plupart des appels) mais qui te permet en plus de définir des websockets avec une API très simple.
Je l’utilise depuis 1 ou 2 ans et ça fonctionne bien. Il te faut Python 3.7 par contre (il y a un paquet dédié que tu peux installer depuis les dépôts si tu es sous Ubuntu LTS, ou c’est la version par défaut dans les Ubuntu récentes).
Pour avoir du pubsub sur des Websockets, je dirais que tu n’as pas besoin d’une surcouche dédiée, il suffit de faire une classe avec un ou deux gros dictionnaires des utilisateurs qui gèrent ton état, et si tu as besoin de te souvenir de ce à quoi l’utilisateur a souscrit derrière, tu peux imbriquer une autre classe pour les utilisateurs (c’est ce que je fais en général).
Si tu tiens vraiment à avoir des abstractions dédiées pour le pubsub, regarde du côté de Crossbar/Autobahn (un peu trop complexe à mon goût).
webhook…
Faire une application web basée sur asyncio
te permet également de mutualiser ta boucle événementielle avec des clients HTTP (en plus du serveur). La bibliothèque pour faire du HTTP client avec asyncio
la plus connue est aiohttp
(l’API est un peu brouillon mais elle fonctionne, et c’est bien pratique).
Un langage front, un langage back. À la limite 1 langage front, 2 langages back. Mais plusieurs langage en front franchement c’est sale.
Je plussoie. Perso, c’est Python (Flask ou Quart) en backend, JavaScript en frontend. Pas de LESS/Gulp/Browserpack/SASS/Angular/React/Vue/jQuery/…, les navigateurs d’aujourd’hui et leurs APIs sont suffisamment évolués pour te permettre de te passer de surcouches (et d’optimisations pour éviter que ces surcouches ne tuent tes performances, vu que le problème ne se pose pas sans).
Bonne journée,