From 21922a11df0d8eb053ee8a48bab7eb621f70658f Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 23 Feb 2026 20:16:03 +0100 Subject: [PATCH] Add README.md with project overview and setup instructions --- README.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..eef0ebf --- /dev/null +++ b/README.md @@ -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 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 +```