|
|
||
|---|---|---|
| README.md | ||
README.md
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
pip install flask flask-socketio eventlet
Paso 2 – Arrancar el servidor TCP
python server.py
# Escucha en 0.0.0.0:9000
Paso 3 – Arrancar el cliente web (otro terminal)
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):
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:
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