| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Un serveur Pub/Sub WebSocket simple, robuste et prêt pour la production, construit avec Flask, Socket.IO et utilisant SQLite pour la persistance des données.
git clone https://github.com/votre-repo/Python.PubSub.Server.git
cd Python.PubSub.Server
# Il est recommandé d'utiliser un environnement virtuel
python -m venv .venv
source .venv/bin/activate # Sur Windows: .venv\Scripts\activate
# Installer les dépendances
pip install -r requirements.txtUne fois les dépendances installées, vous pouvez démarrer le serveur :
python -m python_pubsub_server.pubsub_wsLe serveur démarrera et écoutera sur http://0.0.0.0:5000. La première fois, il créera et initialisera une base de données SQLite nommée pubsub.db.
Vous pouvez accéder au panneau de contrôle en ouvrant http://localhost:5000/ dans votre navigateur.
Le serveur expose à la fois des points d'accès HTTP et des événements WebSocket.
Publie un message sur un sujet spécifique. Le corps de la requête doit être un JSON.
Corps JSON :
{
"topic": "notifications",
"message_id": "msg-unique-001",
"message": {
"type": "alert",
"content": "Maintenance système à 22h."
},
"producer": "admin-script"
}Retourne la liste de tous les abonnements de clients actuellement actifs.
Réponse :
[
{
"consumer": "dashboard-ui",
"topic": "metrics",
"connected_at": 1678886400.123
}
]Retourne la liste de tous les messages qui ont été publiés, triés par ordre antéchronologique.
Réponse :
[
{
"topic": "notifications",
"message_id": "msg-unique-001",
"message": {
"type": "alert",
"content": "Maintenance système à 22h."
},
"producer": "admin-script",
"timestamp": 1678886500.456
}
]Retourne la liste de tous les événements de consommation enregistrés.
Réponse :
[
{
"consumer": "mobile-app-user-123",
"topic": "notifications",
"message_id": "msg-unique-001",
"message": "{'type': 'alert', 'content': 'Maintenance système à 22h.'}",
"timestamp": 1678886505.789
}
]Les clients communiquent avec le serveur via un client Socket.IO.
Un client s'abonne à un ou plusieurs sujets.
// Exemple côté client
socket.emit('subscribe', {
consumer: 'mobile-app-user-123',
topics: ['notifications', 'private-messages']
});Le serveur envoie cet événement aux clients abonnés lorsqu'un nouveau message est publié sur un sujet correspondant.
// Exemple côté client
socket.on('message', (data) => {
console.log(`Nouveau message sur le sujet ${data.topic}:`, data.message);
// Le client peut ensuite notifier le serveur de la consommation
socket.emit('consumed', {
consumer: 'mobile-app-user-123',
topic: data.topic,
message_id: data.message_id,
message: data.message
});
});Un client notifie le serveur qu'il a bien reçu et traité un message.
Géré automatiquement lorsque le client se déconnecte. Le serveur supprime l'abonnement du client de la base de données.
Suivez les mêmes étapes que pour l'installation, mais installez les dépendances de développement si un fichier requirements-dev.txt est disponible.
# Cloner le dépôt
git clone https://github.com/votre-repo/Python.PubSub.Server.git
cd Python.PubSub.Server
# Créer l'environnement virtuel
python -m venv .venv
source .venv/bin/activate
# Installer les dépendances
pip install -r requirements.txt
# pip install -r requirements-dev.txt # Si applicableLe projet utilise pytest pour les tests. Assurez-vous d'installer pytest et les autres dépendances de test.
# Lancer tous les tests
pytest -vPython.PubSub.Server/ ├── src/ │ └── python_pubsub_server/ # Package principal │ ├── pubsub_ws.py # Implémentation du serveur │ ├── migrations/ # Scripts de migration (inclus dans le package) │ │ └── 001_...sql │ ├── *.html # Interfaces web (control-panel, activity-map, circular-graph, etc.) │ └── static/ # Fichiers statiques (CSS, JS) ├── migrations/ # Copie des migrations (pour référence) │ └── 001_...sql ├── tests/ # Suite de tests │ ├── test_pubsub_ws.py │ └── ... ├── requirements.txt # Dépendances du projet └── README.md # Ce fichier
Les contributions sont les bienvenues ! Veuillez suivre ces étapes :
Veuillez vous assurer que tous les tests passent et que la documentation est mise à jour si nécessaire.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
| Back | FazBrowse Home | New Git URL |