Para implementar el broker se ha de usar dos sockets que escuchen asyncio.start_server()
uno en 127.0.0.1 y puerto 8888 para los clientes que sean subscriptores
y otro en 127.0.0.1 y puerto 9999 para los clientes que sean publicadores.
El protocolo usado para transmitir los datos sera el siguiente.
- Se asume que existen unos datos que se quieren enviar que son bytes.
- Se calcula el tamaño en bytes de los datos
- Se envia un entero de 32 bits con el tamaño de los datos
- Se envian los datos
El protocolo usado para recivir los datos sera el siguiente.
- Se lee el entero de 4 bytes para saber el tamaño de los datos
- Se leen los datos enviados usando el tamaño de los datos del paso anterior
Cuando un publicador envie datos han de llegar a todos los subscriptores que esten connectados.
Para validar la implementación existen 5 test.
Para correr los test ejecutar en la raiz del proyecto
py.test
Para hacer esta tarea es necesario python 3.5 o mayor
- Instalar virtualenv:
apt-get install python-virtualenv
- Crear el virtualenv estando dentro del directorio del proyecto
virtualenv -p $(which python3)
- Activamos el virtualenv
source ./virtualenv/bin/activate
- Instalamos las dependencias
pip install -r requirements.txt
- Lanzamos los test
py.test