chat_javi/README.md

2.0 KiB
Raw Blame History

PSP Chat Servidor TCP con interfaz web tipo Telegram

Arquitectura

Revisar la imagen subida!

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