Spaces:
Sleeping
Sleeping
File size: 4,296 Bytes
1ec8134 36f67fc 1eca25d 1ec8134 36f67fc 1ec8134 36f67fc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | ---
title: PageChat Backend
emoji: 🚀
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
license: mit
---
# 🚀 PageChat Backend - Socket.IO Server
Serveur backend FastAPI + Socket.IO pour l'extension PageChat de chat temps réel.
## 🌟 Fonctionnalités
- ✅ **FastAPI** moderne et performant
- ✅ **Socket.IO** pour communication temps réel
- ✅ **WebSocket** et polling fallback
- ✅ **Gestion des rooms** pour organiser les conversations
- ✅ **Historique des messages** persistant en mémoire
- ✅ **CORS configuré** pour extensions Chrome
- ✅ **Logs de debug** détaillés
## 🔧 Architecture
```
┌─────────────────┐ WebSocket/Polling ┌──────────────────┐
│ Chrome Extension│ ←──────────────────────→ │ FastAPI + SocketIO│
│ (Client) │ │ (Serveur) │
└─────────────────┘ └──────────────────┘
↑ ↑
│ │
💬 Interface 🏠 Gestion des rooms
utilisateur 📝 Historique messages
```
## 🚀 Démarrage Rapide
### Utilisation avec l'extension
1. **Installez l'extension** PageChat dans Chrome
2. **Configurez l'URL du serveur** dans `service_worker.js` :
```javascript
const SERVER_URL = "https://votre-username-pagechat-backend.hf.space";
```
3. **Ouvrez n'importe quelle page web**
4. **Cliquez sur le bouton chat 💬** qui apparaît
### Test direct
Visitez l'endpoint `/test` pour tester l'interface intégrée :
```
https://votre-username-pagechat-backend.hf.space/test
```
## 📡 API Endpoints
### HTTP Routes
- `GET /` - Status du serveur
- `GET /test` - Interface de test intégrée
### Socket.IO Events
#### Client → Serveur
- `join_room` - Rejoindre une room de chat
```json
{"room": "global", "name": "MonPseudo"}
```
- `message` - Envoyer un message
```json
{"text": "Hello!", "name": "MonPseudo", "room": "global"}
```
#### Serveur → Client
- `system` - Messages système (connexions, etc.)
- `message` - Messages de chat des utilisateurs
- `history` - Historique des messages lors de la connexion
## 🛠️ Configuration
### Variables d'environnement
- `PORT` - Port du serveur (défaut: 5000)
### Paramètres Socket.IO
- **Transports :** WebSocket, Polling
- **CORS :** Autorisation globale pour extensions
- **Reconnexion :** Automatique côté client
## 📊 Monitoring
Le serveur affiche des logs détaillés :
- 🔌 Connexions/déconnexions clients
- 🏠 Événements join_room
- 💬 Messages échangés
- 📤 Diffusion vers les rooms
## 🔒 Sécurité
- ✅ **CORS configuré** pour extensions Chrome
- ✅ **Validation des données** des messages
- ✅ **Limite d'historique** (50 messages max par room)
- ✅ **Pas de stockage persistant** des données sensibles
## 📁 Structure du Projet
```
backend-fastapi/
├── app.py # Serveur principal FastAPI + SocketIO
├── requirements.txt # Dépendances Python
├── huggingface.yml # Configuration HF Spaces
├── README.md # Documentation
└── test_client.py # Client de test (optionnel)
```
## 🧪 Tests
### Test automatique
```bash
python test_client.py
```
### Test manuel
1. Ouvrez `/test` dans votre navigateur
2. Testez l'envoi de messages
3. Ouvrez plusieurs onglets pour simuler plusieurs utilisateurs
## 🔗 Liens Utiles
- [Extension PageChat](https://github.com/votre-repo/pagechat-extension)
- [Page de test](https://huggingface.co/spaces/votre-username/pagechat-test)
- [Documentation Socket.IO](https://socket.io/docs/)
- [FastAPI Documentation](https://fastapi.tiangolo.com/)
## 🤝 Contribution
1. Fork le projet
2. Créez une branche feature
3. Commitez vos changements
4. Pushez vers la branche
5. Ouvrez une Pull Request
## 📄 License
MIT License - voir le fichier LICENSE pour plus de détails.
---
**🚀 Développé avec FastAPI, Socket.IO et ❤️ pour les communications temps réel** |