Ein Mosquitto-Broker, Tornado als Webserver, Sockjs in Client (Browser) Side Javascript Library, Sockjs-Tornado als Sockjs-Implementierung auf der Serverseite und Paho-MQTT (MQTTTT-Python-Client).
Link: http://mosquittochat.readthedocs.io/en/latest/
Link: https://pypi.python.org/pypi/mosquittochat
| Autor: | Anirban Roy Das |
|---|---|
| E-Mail: | [email protected] |
| Urheberrecht (c): | 2017, Anirban Roy Das <[email protected]> |
Überprüfen Sie mosquittoChat/LICENSE für die vollständige Copyright -Mitteilung.
Mosquittochat ist ein MQTT -Protokoll -basierter einfacher Chat -Server, der lokal eingerichtet werden kann, um in Ihrem LAN zu chatten. Es unterstützt sowohl den öffentlichen Chat unter allen Teilnehmern, die gleichzeitig zu einem bestimmten Zeitpunkt verbunden sind als auch private Chat zwischen diesen einzelnen Teilnehmern.
Es verwendet das MQTT -Protokoll, um das Echtzeit -Message -Passing -System zu implementieren. MQTT wird in vielen Sprachen implementiert und in vielen Software ist einer von solchen Mosquitto, einem Nachrichtenbroker, der das MQTT -Protokoll implementiert.
Die Verbindung wird mit dem Sockjs -Protokoll erstellt. Sockjs ist in vielen Sprachen implementiert, hauptsächlich in JavaScript, um mit den Servern in Echtzeit zu sprechen, was versucht, eine Duplex-bidirektionale Verbindung zwischen dem Client (Browser) und dem Server zu erstellen. Der Server sollte auch das Sockjs -Protokoll implementieren. Verwenden der Sockjs-Tornado-Bibliothek, die das SockJS -Protokoll auf dem Tornado-Server enthüllt.
Es versucht zunächst, eine Websocket-Verbindung zu erstellen, und wenn sie fehlschlägt, fällt es auf andere Transportmechanismen wie Ajax , lange Umfragen usw. nach, nachdem die Verbindung hergestellt wurde, der Tornado-Server ** (Sockjs-Tornado) ** eine Verbindung zu Mosquitto über Mosquitto mit der Mosquitto-Protocol mit der Mosquitto -Protoc-Protocol mit der Mosquitto-Protocol mit der Mosquitto-Protocol mit der Mosquitto-Protocol mithilfe der Mosquitto-Protocol-Protoct.
Somit ist die Verbindung Webbrowser nach Tornado nach Mücken und umgekehrt.
| Sockjs-Client: | Erweiterter WebSocket JavaScript -Client |
|---|---|
| Tornado: | Async Python Web Library + Web Server |
| Sockjs-Tornado: | SockJS WebSocket Server -Implementierung für Tornado |
| MQTT: | Maschinen-zu-Maschin-Konnektivitätsprotokoll "Internet of Things" |
| PAHO-MQTT: | MQTT Python Client Library |
| Mosquitto: | Ein Nachrichtenbroker, der MQTT in C implementiert |
| PyTest: | Python -Testbibliothek und Testläufer mit fantastischer Testdiscobery |
| PyTest-Flask: | PyTest -Plugin für Flask -Apps, um Fask -Apps mithilfe der PyTest -Bibliothek zu testen. |
| Ubers Test-Double: | Testen Sie die Doppelbibliothek für Python, eine gute Alternative zur Scheinbibliothek |
| Jenkins (optional): | Ein selbst gehosteter CI-Server |
| Travis-ci (optional): | Ein gehosteter CI-Server kostenlos für Open-Source-Projekte |
| Docker: | Ein Containerisierungstool für bessere DevOps |
Es gibt zwei Arten von Installation. Eine, die Rabbitchat als Binärdatum durch Installaing von PIP und die Anwendung in der lokalen Maschine direkt ausführt. Eine andere Methode ist die Ausführung der Anwendung von Docker. Daher ein weiterer Satz von Installationsschritten für den Docker -Anwendungsfall.
Um geheime und vertrauliche Datenleckage über Ihre Git-Commits für öffentliche Github-Repo zu schützen, überprüfen Sie git-secrets .
Dieses Git Secrets -Projekt hilft bei der Verhinderung der sezernigen Leckage versehentlich.
Sehen Sie, es werden so viele Technologien verwendet, die in den technischen Spezifikationen erwähnt werden, und dennoch sind die Abhängigkeiten nur zwei. Dies ist die Kraft des Dockers.
Schritt 1 - Docker installieren
Folgen Sie meinem anderen Github -Projekt, bei dem alles, was mit DevOps und Skripten zusammenhängt, erwähnt wird und eine Entwicklungsumgebung zur Verwendung von Docker eingerichtet wird.
- Projekt: https://github.com/anirbanroydas/devops
Schritt 2 - Installation machen
# (Mac OS) $ Brew Install Automake # (Ubuntu) $ sudo apt-Get-Update $ sudo apt-get install make
Schritt 3 - Abhängigkeiten installieren
Installieren Sie die folgenden Abhängigkeiten von Ihrem lokalen Entwicklungsgerät, die in verschiedenen Skripten verwendet werden.
$ PIP Installieren Sie Mosquittochat
Wenn die obigen Abhängigkeiten nicht durch den obigen Befehl installiert werden, verwenden Sie die folgenden Schritte, um sie einzeln zu installieren.
Schritt 1 - PIP installieren
Befolgen Sie die folgenden Methoden zur Installation von PIP. Einer von ihnen kann Ihnen helfen, PIP in Ihrem System zu installieren.
- Methode 1 - https://pip.pypa.io/en/stable/installing/
- Methode 2- http://ask.xmodulo.com/install-pip-linux.html
- Methode 3 - Wenn Sie Python unter Mac OS X über
brew install pythoninstalliert haben, ist PIP bereits zusammen mit Python installiert.Schritt 2 - Tornado installieren
$ pip Installieren Sie TornadoSchritt 3 - Installieren Sie Sockjs -Tornado
$ pip Installieren Sie Sockjs-TornadoSchritt 4 - PAHO -MQTT installieren
$ pip Installieren Sie PAHO-MQTTSchritt 5 - Mosquitto installieren
Für
Mac-Benutzer1. Brew Install Mosquitto
$ Brew Install Mosquitto
- Konfigurieren Sie Mosquitto, indem Sie die Datei unter
/usr/local/etc/mosquitto/mosquitto.confändern.Für
Ubuntu/Linux-Benutzer
Aktivieren Sie das Mosquitto -Repository (optional)
Versuchen Sie es zuerst direkt, wenn es nicht funktioniert, dann folgen Sie diesem Schritt und fahren Sie danach fort.
$ sudo APT-add-Repository PPA: Mosquitto-Dev/Mosquitto-PPA2. Aktualisieren Sie die Quellen mit unserem Neuzugang von oben
$ APT-Get-Update3. und schließlich laden und installieren Sie Mosquitto
$ sudo apt-get install mosquitto
- Konfigurieren Sie Mosquitto, indem Sie die Datei unter
/usr/local/etc/mosquitto/mosquitto.confändern.
Wenn Sie das Projekt in einem CI -Setup (wie Travis, Jenkins) verwenden, können Sie bei jedem Drücken nach Github Ihre Travis Build- oder Jenkins -Pipeline einrichten. Travis wird die Datei .travis.yml verwenden und Jenknis wird die Jenkinsfile verwenden, um ihre Arbeit zu erledigen. Wenn Sie Travis verwenden, führen Sie nun die Travis -spezifischen Setup -Befehle aus und führen Sie für Jenkins zuerst die Jenkins -spezifischen Setup -Befehle aus. Sie können auch beide verwenden, um zwischen der Leistung zu vergleichen.
Die Setup -Tasten lesen die Werte aus einer .env -Datei, in der alle Umgebungsvariablen exportiert sind. Sie werden jedoch eine Beispiel env -Datei und keine .env -Datei bemerken. Stellen Sie sicher, dass Sie die env -Datei in .env kopieren und die tatsächlichen Variablen mit Ihren realen Werten ändern/ändern .
Die .env -Dateien werden nicht zu Git verpflichtet, da sie in der Datei .gitignore erwähnt werden, um ein Leck vertraulicher Daten zu verhindern.
Nachdem Sie die Setup -Befehle ausgeführt haben, erhalten Sie eine Reihe sicherer Schlüssel. Kopieren Sie diese in Ihre Konfigurationsdateien, bevor Sie fortfahren.
Hinweis: Dies ist ein einmaliges Setup. Hinweis: Überprüfen Sie die Setup -Skripte in den scripts/ Verzeichnissen, um zu verstehen, welche Umgebungsvariablen sind, deren verschlüsselte Schlüssel bereitgestellt wird. HINWEIS: Vergessen Sie nicht, die sicheren Schlüssel zu Ihrem .travis.yml oder Jenkinsfile zu kopieren
Hinweis: Wenn Sie die Kopie von env in .env Datei nicht durchführen und die Variablenwerte in .env mit Ihren realen Werten ändern möchten, können Sie einfach das Skript von travis-setup.sh oder jenknis-setup.sh bearbeiten und die Werte direkt aktualisieren. Die Skripte befinden sich im Verzeichnis von scripts/ Projektebene.
WICHTIG: Sie müssen das Skript travis-setup.sh oder das Skript jenkins-setup.sh in Ihrem lokalen Computer ausführen, bevor Sie an Remote Server bereitgestellt werden.
Diese Schritte verschlüsseln Ihre Umgebungsvariablen, um Ihre vertraulichen Daten wie API -Tasten, Docker -basierte Schlüssel und Bereitstellung bestimmter Tasten zu sichern.
$ make Travis-Setup
Diese Schritte verschlüsseln Ihre Umgebungsvariablen, um Ihre vertraulichen Daten wie API -Tasten, Docker -basierte Schlüssel und Bereitstellung bestimmter Tasten zu sichern.
$ machen Jenkins-Setup
Es gibt zwei Arten von Nutzung. Eine, die Rabbitchat als Binärdatum durch Installaing von PIP und die Anwendung in der lokalen Maschine direkt ausführt. Eine andere Methode ist die Ausführung der Anwendung von Docker. Daher eine Reihe von Nutzungsschritten für den Docker -Anwendungsfall.
Nachdem die oben genannten Abhängigkeiten installiert wurden und die optionale (falls nicht Verwendung eines CI -Servers) oder erforderlich (falls ein CI -Server verwendet werden), führen Sie einfach die folgenden Befehle aus, um sie zu verwenden:
Sie können die App in Ihrem lokalen Entwicklungsgerät ausführen und testen oder direkt in einem Remote -Computer ausführen und testen. Sie können auch in einer Produktionsumgebung laufen und testen.
Die folgenden Befehle beginnen alles in der Entwicklungsumgebung. Um in einer Produktionsumgebung zu beginnen, suffix -prod für jeden Befehl .
Wenn beispielsweise der normale Befehl make start ist, verwenden Sie für die Produktionsumgebung make start-prod . Führen Sie diese Änderung zu jedem Befehl vor, den Sie in der Produktionsumgebung ausführen möchten.
Ausnahmen: Sie können die obige Methode nicht für Testbefehle verwenden. Testbefehle sind für jede Umgebung gleich. Auch der Befehl make system-prune ist eigenständig ohne produktionsspezifische Variation (bleibt in allen Umgebungen gleich).
Anwendung starten
$ sauber machen $ make build $ Start machen # ODER $ docker -compose up -d
Beantragung der Anwendung
$ mach Stop # ODER $ docker-compose stop
Anwendung entfernen und reinigen
$ sauber machen # ODER $ docker -compose rm -Force -v $ echo "y" | Docker -Systembetrieb
Sauberes System
$ make system-prune # ODER $ echo "y" | Docker -Systembetrieb
So überprüfen Sie die gesamten Anwendungsprotokolle
$ Machen Sie Checklogs # ODER $ docker-compos-Protokolle--Follow-tail = 10
Um nur die Protokolle der Python -App zu überprüfen
$ make Check-Logs-App # ODER $ docker-compose-Protokolle--Follow--tail = 10 identidock
Nachdem Sie Mosquittochat installiert haben, führen Sie einfach die folgenden Befehle aus, um sie zu verwenden:
Mosquitto -Server
1. Für Mac -Benutzer
# Normalerweise starten $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf # Wenn Sie im Hintergrund laufen möchten $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf -d # Brew Services beginnen (funktioniert nicht mit TMUX, aho eine Lösung, die in einer der Pull -Anfragen und Probleme erwähnt wird) $ Brew Services Start Mosquitto
2. Für Ubuntu/LInux -Benutzer
# Normalerweise starten $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf # Wenn Sie im Hintergrund laufen möchten $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf -d # Um den Service zu nutzen $ sudo Service Mosquitto Start # Um den Service nicht mehr zu nutzen $ sudo Service Mosquitto Stopp # Mit dem Dienst neu starten $ sudo Service Mosquitto Neustart # Um den Status zu überprüfen $ Service Mosquitto Status
Start Mosquittochat Applcation
$ mosquittochat [Optionen]
Optionen
| --Hafen: | Portnummer, bei der der Chat -Server startet |
|---|
Beispiel
$ mosquittochat -port = 9191
Stoppen Sie den Mosquittochat -Server
Klicken Sie auf Ctrl+C um den Server zu stoppen.
HINWEIS: Das Testen erfolgt nur mit der Docker -Methode. Wie auch immer, es sollte keine Rolle spielen, ob Sie Ihre Anwendung mithilfe der Docker -Methode oder der eigenständigen Methode ausführen. Tests sind unabhängig davon.
Testen sind nun das Hauptvertrag des Projekts. Sie können in vielerlei Hinsicht testen, nämlich die in den folgenden Befehlen erwähnten make , die alles automatisieren, und Sie müssen nichts anderes docker , tox . Nichts muss bekannt sein.
Auf der anderen Seite können Sie sie direkt ausführen, wenn Sie die Fine-Steuer über die Tests möchten, entweder durch Verwendung von pytest -Befehlen oder über tox -Befehle, um sie in verschiedenen Python-Umgebungen oder mit docker-compose -Befehlen auszuführen, um verschiedene Tests auszuführen.
Das Ausführen der Make -Befehle ist jedoch Gesetze, die zur Strategie gehen und den Ansatz für dieses Projekt empfehlen.
Hinweis: Tox kann direkt verwendet werden, wo docker -Container nicht verwendet werden. Obwohl wir versuchen können, tox in unseren Testkontianern auszuführen, die wir für das Ausführen der Tests mithilfe der make -Befehle verwenden, müssten wir die Dockerfile ändern und docker python -Abhängigkeiten wie python2.7 installieren, python3.x und dann führen Sie tox pytest aus.
Einschränkung: Die einzige Einschränkung der direkten Verwendung der Befehle machen und nicht tox verwendet. Wir testen das Projekt nur in einer einzelnen python -Umgebung, Nameley python 3.6 .
Alles testen
$ Test machen
Jede andere Methode ohne Verwendung besteht darin, viele Befehle zu schreiben. Verwenden Sie also den Befehl make bevorzugt
Unit -Tests durchführen
$ make testeinit
Komponententests durchführen
$ make test component
Vertragstests durchführen
$ make Test-Contract
Integrationstests durchführen
$ Testintegration machen
Um End -to -End (E2E) oder System- oder UI -Akzeptanz oder Funktionstests durchzuführen
$ make test-e2e # ODER $ make Test-System # ODER $ test-Ui-Akzeptanz machen # ODER $ make test-funktional