Um servidor de chat/chat do protocolo MQTT usando o Mosquitto Broker, Tornado como servidor da web, Sockjs no cliente (navegador) JavaScript Library, Sockjs-Tornado como implementação do SockJS no lado do servidor e Paho-MQTT (MQTT Python Client).
Link: http://mosquittochat.readthedocs.io/en/latest/
Link: https://pypi.python.org/pypi/mosquittochat
| Autor: | Anirban Roy Das |
|---|---|
| E-mail: | [email protected] |
| Copyright (C): | 2017, Anirban Roy Das <[email protected]> |
Verifique mosquittoChat/LICENSE File para obter um aviso completo de direitos autorais.
Mosquittochat é um servidor de bate -papo simples baseado em protocolo MQTT, que pode ser configurado localmente para conversar na sua LAN. Ele apoia o bate -papo público entre todos os participantes conectados simultaneamente em um determinado momento e também um bate -papo privado entre esses participantes individuais.
Ele usa o protocolo MQTT para implementar o sistema de passagem de mensagens em tempo real. O MQTT é implementado em vários idiomas e em muitos softwares, um deles é o Mosquitto, que é um corretor de mensagens que implementa o protocolo MQTT.
A conexão é criada usando o protocolo SOCKJS. O SOCKJS é implementado em vários idiomas, principalmente em JavaScript para conversar com os servidores em tempo real, que tenta criar uma conexão bidirecional duplex entre o cliente (navegador) e o servidor . O servidor também deve implementar o protocolo SOCKJS . Assim, usando a Biblioteca Sockjs-Tornado, que expõe o protocolo Sockjs no servidor Tornado.
Primeiro tenta criar uma conexão WebSocket e, se falhar, ele falsa para outros mecanismos de transporte, como Ajax , longas pesquisas , etc. Após a estabelecimentos da conexão, o servidor de Tornado ** (Sockjs-Tornado) ** se conecta à Mosquitto via MQTT Protocol usando o MQTTTtT Liblibliblibliblibraft -MHO, Mosquitto via MQTT Protocol.
Assim, a conexão é o navegador da web de Tornado para Mosquitto e Vice-Versa.
| Sockjs-client: | Cliente avançado do WebSocket JavaScript |
|---|---|
| Tornado: | Biblioteca Web Python assíncrona + servidor da web |
| Sockjs-Tornado: | SockJS Websocket Server Implementation for Tornado |
| MQTT: | Machine-a Machine (M2M)/Internet of Things "Protocolo de conectividade |
| paho-mqtt: | MQTT Python Client Biblioteca |
| Mosquitto: | Um corretor de mensagens implementando MQTT em C |
| Pytest: | Biblioteca de testes Python e corredor de teste com discobery de teste incrível |
| Pytest-Flask: | Plug -in Pytest para aplicativos de frasco, para testar aplicativos FASK usando a biblioteca Pytest. |
| O test-duplo do Uber: | Teste a biblioteca dupla para Python, uma boa alternativa à biblioteca simulada |
| Jenkins (opcional): | Um servidor de IC auto-hospedado |
| Travis-Ci (opcional): | Um servidor de CI hospedado gratuito para projecos de código aberto |
| Docker: | Uma ferramenta de contêinerização para melhores devOps |
Existem dois tipos de instalação. Um usando o Rabbitchat como um binário instalando -se da PIP e executando o aplicativo diretamente na máquina local. Outro método é executar o aplicativo do Docker. Portanto, outro conjunto de etapas de instalação para o estojo de uso do Docker.
Para salvaguar o vazamento de dados secretos e confidenciais por meio do seu GIT, se compromete com o Repo Public Github, verifique git-secrets .
Este projeto Git Secrets ajuda a prevenir o vazamento do Secrete por engano.
Veja, existem tantas tecnologias usadas mencionadas nas especificações da tecnologia e, no entanto, as dependências são apenas duas. Este é o poder do Docker.
Etapa 1 - Instale o Docker
Siga meu outro projeto do Github, onde tudo relacionado ao DevOps e Scripts é mencionado, juntamente com a criação de um ambiente de desenvolvimento para usar o Docker.
- Projeto: https://github.com/anirbanroydas/devops
Etapa 2 - Instale make
# (Mac OS) $ Brew Install Autorake # (Ubuntu) Atualização $ sudo apt-get $ sudo apt-get install make
Etapa 3 - Instale dependências
Instale as seguintes dependências em sua máquina de desenvolvimento local, que será usada em vários scripts.
$ pip install mosquittochat
Se as dependências acima não forem instaladas pelo comando acima, use as etapas abaixo para instalá -las uma a uma.
Etapa 1 - Instale o PIP
Siga os métodos abaixo para instalar o PIP. Um deles pode ajudá -lo a instalar o PIP em seu sistema.
- Método 1 - https://pip.pypa.io/en/stable/installing/
- Método 2- http://ask.xmodulo.com/install-pip-linux.html
- Método 3 - Se você instalou o Python no Mac OS X via
brew install python, o PIP já está instalado junto com o Python.Etapa 2 - Instale o tornado
$ pip install tornadoEtapa 3 - Instale Sockjs -Tornado
$ pip install sockjs-ternosEtapa 4 - Instale Paho -MQTT
$ pip install paho-mqttEtapa 5 - Instale o mosquitão
Para usuários
Mac1. Brew Install Mosquitto
$ Brew Install Mosquitto
- Configure o Mosquitto, modificando o arquivo em
/usr/local/etc/mosquitto/mosquitto.conf.Para usuários
Ubuntu/Linux
Ativar repositório de mosquitão (opcional)
Primeiro tente diretamente, se não funcionar, siga esta etapa e continue depois disso.:
$ sudo apt-add-repository ppa: mosquitto-dev/mosquitto-ppa2. Atualize as fontes com nossa nova adição de cima
Atualização $ apt-get3. E finalmente, faça o download e instale o Mosquitto
$ sudo apt-get install mosquitto
- Configure o Mosquitto, modificando o arquivo em
/usr/local/etc/mosquitto/mosquitto.conf.
Se você estiver usando o projeto em uma configuração de CI (como Travis, Jenkins), então, em todos os esforços para o Github, você poderá configurar o seu Travis Build ou Jenkins Pipeline. Travis usará o arquivo .travis.yml e Jenknis usará o Jenkinsfile para fazer seus trabalhos. Agora, caso você esteja usando o Travis, execute os comandos de configuração específicos do Travis e, para Jenkins, execute os comandos de configuração específicos do Jenkins primeiro. Você também pode usar os dois para comparar entre o desempenho.
As teclas de configuração leem os valores de um arquivo .env que possui todas as variáveis de ambiente exportadas. Mas você notará um exemplo de arquivo env e não um arquivo .env . Certifique -se de copiar o arquivo env para .env e alterar/modificar as variáveis reais com seus valores reais.
Os arquivos .env não estão comprometidos com o GIT, pois são mencionados no arquivo .gitignore para evitar qualquer vazamento de dados confidenciais.
Depois de executar os comandos de configuração, você receberá várias chaves seguras. Copie -os para seus arquivos de configuração antes de prosseguir.
Nota: Esta é uma configuração única. Nota: Verifique os scripts de configuração dentro dos scripts/ diretório para entender quais são as variáveis de ambiente cujas teclas criptografadas são fornecidas. Nota: Não se esqueça de copiar as teclas seguras para o seu .travis.yml ou Jenkinsfile
NOTA: Se você não quiser fazer a env do arquivo .env e alterar os valores da variável em .env com seus valores reais, você pode apenas editar o script travis-setup.sh ou jenknis-setup.sh e atualizar os valores diretamente. Os scripts estão no diretório scripts/ nível do projeto.
IMPORTANTE: Você precisa executar o script travis-setup.sh ou o script jenkins-setup.sh em sua máquina local antes de implantar no servidor remoto.
Essas etapas criptografarão suas variáveis de ambiente para proteger seus dados confidenciais, como chaves da API, chaves baseadas em docker, implantar chaves específicas.
$ Faça Travis-setup
Essas etapas criptografarão suas variáveis de ambiente para proteger seus dados confidenciais, como chaves da API, chaves baseadas em docker, implantar chaves específicas.
$ Faça Jenkins-setup
Existem dois tipos de uso. Um usando o Rabbitchat como um binário instalando -se da PIP e executando o aplicativo diretamente na máquina local. Outro método é executar o aplicativo do Docker. Portanto, outro conjunto de etapas de uso para o caso de uso do Docker.
Depois de instalar as dependências acima e executar a etapa opcional (se não estiver usando nenhum servidor de CI) ou necessária (se estiver usando algum servidor de CI ), basta executar os seguintes comandos para usá -lo:
Você pode executar e testar o aplicativo em sua máquina de desenvolvimento local ou pode executar e testar diretamente em uma máquina remota. Você também pode executar e testar em um ambiente de produção.
Os comandos abaixo começarão tudo no ambiente de desenvolvimento. Para começar em um ambiente de produção, o sufixo -prod para todos os comando Make .
Por exemplo, se o comando normal for make start e, para o ambiente de produção, use make start-prod . Faça essa modificação para cada comando que você deseja executar no ambiente de produção.
Exceções: você não pode usar o método acima para comandos de teste, os comandos de teste são os mesmos para cada ambiente. Além disso, o comando make system-prune é independente, sem variação específica da produção (permanece o mesmo em todos os ambientes).
Inicie o aplicativo
$ Torne limpo $ Faça construir $ FAZENDO # OU $ Docker -Compõe Up -d
Pare de aplicação
$ faz parar # OU $ Docker-Compose Stop
Remover e limpar a aplicação
$ Torne limpo # OU $ Docker -Compor RM -Force -v $ echo "y" | Prune do sistema Docker
Sistema limpo
$ Make System-Rune # OU $ echo "y" | Prune do sistema Docker
Para verificar todos os logs do aplicativo
$ Faça logs de cheques # OU $ DOCKER-COMPOSE LOGS-FOLL-Tail = 10
Para verificar apenas os logs do aplicativo Python
$ FAZENDO O-LOGS-APP # OU $ Docker-Compõe logs--siga--cauda = 10 Identidock
Depois de instalar o Mosquittocat, basta executar os seguintes comandos para usá -lo:
Servidor Mosquitto
1. Para usuários Mac
# Comece normalmente $ Mosquitto-c /usr/local/etc/mosquitto/mosquitto.conf # Se você quiser executar em segundo plano $ Mosquitto-c /usr/local/etc/mosquitto/mosquitto.conf -d # Comece a usar os serviços de cerveja (não funciona com o TMUX, ATHOUGH, existe uma correção, mencionada em um dos pedidos e problemas) $ Brew Services Start Mosquitto
2. Para usuários Ubuntu/LInux
# Comece normalmente $ Mosquitto-c /usr/local/etc/mosquitto/mosquitto.conf # Se você quiser executar em segundo plano $ Mosquitto-c /usr/local/etc/mosquitto/mosquitto.conf -d # Para começar a usar o serviço $ sudo service mosquitto start # Para parar de usar o serviço $ sudo service mosquitto parada # Para reiniciar usando o serviço $ sudo service mosquitto reiniciar # Para verificar o status $ Service Mosquitto Status
Inicie o aplicativo Mosquittocat
$ Mosquittochat [Opções]
Opções
| --porta: | Número da porta onde o servidor de bate -papo começará |
|---|
Exemplo
$ Mosquittochat --port = 9191
Pare o servidor Mosquittocat
Clique em Ctrl+C para interromper o servidor.
Nota: O teste é feito apenas usando o método do docker. De qualquer forma, não deve importar se você executa seu aplicativo usando o método Docker ou o método independente. Os testes são independentes disso.
Agora, o teste é o principal negócio do projeto. Você pode testar de várias maneiras, a saber, usar comandos make , conforme mencionado nos comandos abaixo, que automatizam tudo e você não precisa saber mais nada, como o que a biblioteca ou estrutura de teste está sendo usada, como os testes estão acontecendo, diretamente ou através de contêineres tox docker , ou podem ser ambientes virtuais diferentes. Nada é necessário para ser conhecido.
Por outro lado, se você quiser um controle fino sobre os testes, poderá executá-los diretamente, usando comandos pytest ou via com comxos tox para executá-los em diferentes ambientes Python ou usando comandos docker-compose para executar testes diferentes.
Mas a execução dos comandos Make é Lawasy, a estratégia e a abordagem recomendada para este projeto.
NOTA: O TOX pode ser usado diretamente, onde os contêineres docker não serão usados. Embora possamos tentar executar tox dentro de nossos contribuidores de teste que estamos usando para executar os testes usando os comandos make , mas então teríamos que alterar o Dockerfile e instalar todas as dependências python como python2.7 , python3.x e depois executar os comandos tox de dentro dos contêineres docker , que os comandos pytest execução.
Advertência: a única advertência de usar os comandos Make diretamente e não usar tox é que estamos testando apenas o projeto em um único ambiente python , Nameley python 3.6 .
Para testar tudo
$ Faça teste
Qualquer outro método sem usar a marca envolverá escrever muitos comandos. Então use o comando make preferencialmente
Para realizar testes de unidade
$ Make Test-Unit
Para realizar testes de componentes
$ Faça o componente de teste
Para realizar testes de contrato
$ Faça test-contrato
Para realizar testes de integração
$ Faça a integração de teste
Para executar a ponta a ponta (E2E) ou o sistema ou a aceitação da interface do usuário ou testes funcionais
$ Make Test-E2E # OU $ Make test-System # OU $ Faça test-ui-aceitação # OU $ Faça testes-funcionais