Add README.md with project overview and setup instructions

This commit is contained in:
Your Name 2026-02-23 20:16:03 +01:00
commit 21922a11df
1 changed files with 91 additions and 0 deletions

91
README.md Normal file
View File

@ -0,0 +1,91 @@
# PSP Chat Servidor TCP con interfaz web tipo Telegram
## Arquitectura
```
[Navegador A] ──WebSocket──► [client_web.py] ──TCP──►
[server.py :9000]
[Navegador B] ──WebSocket──► [client_web.py] ──TCP──►
```
- **server.py** — Servidor TCP puro con threading. Gestiona usuarios, salas, mensajes.
- **client_web.py** — Puente Flask + Socket.IO entre navegadores y el servidor TCP.
## Inicio rápido (todo en local)
### Paso 1 Instalar dependencias
```bash
pip install flask flask-socketio eventlet
```
### Paso 2 Arrancar el servidor TCP
```bash
python server.py
# Escucha en 0.0.0.0:9000
```
### Paso 3 Arrancar el cliente web (otro terminal)
```bash
python client_web.py
# Interfaz web en http://localhost:5001
```
### Paso 4 Abrir varios navegadores
```
http://localhost:5001
```
Cada pestaña/dispositivo puede conectarse con un nick diferente.
## Uso en red local (varios equipos)
**En el servidor** (IP ej: 192.168.1.10):
```bash
python server.py
python client_web.py --server 192.168.1.10
```
**Desde otros equipos**: abrir `http://192.168.1.10:5001`
## Opciones del cliente web
```
python client_web.py --server <IP> # IP del servidor TCP (default: 127.0.0.1)
--port <9000> # Puerto TCP (default: 9000)
--web-port <5001> # Puerto web (default: 5001)
```
## Protocolo TCP (JSON por líneas)
El servidor habla JSON terminado en `\n`. Puedes conectarte con `netcat` o cualquier cliente TCP:
```bash
nc localhost 9000
{"type":"join","nick":"Test"}
{"type":"msg","room":"general","text":"Hola!"}
{"type":"pm","to":"Alice","text":"mensaje privado"}
{"type":"create","room":"mi_sala"}
{"type":"join_room","room":"mi_sala"}
{"type":"leave_room","room":"mi_sala"}
{"type":"users"}
{"type":"rooms"}
```
## Características
- 🌐 Sala **#general** siempre disponible
- 📁 Crear salas personalizadas
- 📩 Mensajes **privados** (PM) entre usuarios
- 👥 Lista de usuarios en línea en tiempo real
- 🚪 Unirse y salir de salas
- 🌙 Tema oscuro estilo Telegram
- 🔔 Notificaciones de mensajes no leídos
- 📱 Responsive para móvil
## Estructura
```
chatapp/
├── server.py # Servidor TCP puro
├── client_web.py # Puente Flask + Socket.IO
├── requirements.txt
└── templates/
└── index.html # UI Telegram-like
```