Skip to content

vinaocruz/mqtt-simple-progress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Progresso Simples com protocolo MQTT

Este projeto é uma simples prova de conceito sobre uso do RabbitMQ como MQTT broker para implementação do pub/sub com mosquitto e javascript, respectivamente.

A ideia é criar um cenário de envio de progresso de modo a evitar pooling na API.

Setup

Execute o docker-compose para subir o broker com rabbitmq:

docker-compose up -d

Subscriber

Usando a biblioteca MQTT.js, o subscriber estará aguardando as mensagens publicadas. Para este exemplo, usaremos um número inteiro que represente a porcentagem de progresso de consumo.

Em seu navegador, abra o arquivo index.html localizado na pasta subscriber. A página deve conectar sob websocket ao rabbitMQ e podemos conferir a conexão ativa através do dashboard do rabbitmq.

Publisher

Neste primeiro momento, usaremos o Eclipse Mosquitto para envio da mensagem através do terminal. Primeiro, instale o mosquitto em sua máquina (abaixo o exemplo no fedora):

dnf install mosquitto

Agora abra o terminal e publique um valor numérico de progresso (ex: valores entre 0 e 100)

mosquitto_pub -t progress -m 20

progress refere-se ao nome do tópico para onde será enviado a mensagem.

PHP Publisher

Para ampliar a experiências desse exemplo, também é possível enviar uma mensagem com produtor em php, localizado na pasta /publisher. Instale a dependência via composer e execute o arquivo index.php, alterando o valor do progresso diretamente no código:

composer install
php index.php

Go Publisher

O produtor em Go funciona um pouco diferente. São enviadas 50 mensagens incrementais, para ter uma visualização de progresso da barra na página. Certifique de que tem o go instalado em sua máquina local e execute:

go run publisher.go

Pronto!

Exemplo em funcionamento

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published