Sebuah sistem obrolan/obrolan berbasis protokol MQTT menggunakan broker Mosquitto, tornado sebagai server web, sockjs di klien (browser) pustaka JavaScript, sockjs-tornado sebagai implementasi sockjs di sisi server dan paho-mqtt (klien python mqtt).
Tautan: http://mosquittochat.readthedocs.io/en/latest/
Tautan: https://pypi.python.org/pypi/mosquittochat
| Pengarang: | Anirban Roy Das |
|---|---|
| E-mail: | [email protected] |
| Hak Cipta (C): | 2017, Anirban Roy Das <[email protected]> |
Periksa file mosquittoChat/LICENSE untuk pemberitahuan hak cipta penuh.
Mosquittochat adalah server obrolan sederhana berbasis protokol MQTT yang dapat diatur secara lokal untuk mengobrol di LAN Anda. Ini mendukung kedua obrolan publik di antara semua peserta yang terhubung secara bersamaan pada waktu tertentu dan juga obrolan pribadi antara masing -masing peserta tersebut.
Ini menggunakan protokol MQTT untuk mengimplementasikan sistem lewat pesan waktu nyata. MQTT diimplementasikan dalam banyak bahasa dan dalam banyak perangkat lunak, salah satunya adalah Mosquitto, yang merupakan broker pesan yang menerapkan protokol MQTT.
Koneksi dibuat menggunakan protokol SockJS. Sockjs diimplementasikan dalam banyak bahasa, terutama di JavaScript untuk berbicara dengan server secara real time, yang mencoba membuat koneksi dua arah dupleks antara klien (browser) dan server . Server itu juga harus mengimplementasikan protokol SockJS . Jadi menggunakan perpustakaan Sockjs-Tornado yang memperlihatkan protokol Sockjs di server tornado.
Pertama-tama ia mencoba membuat koneksi WebSocket, dan jika gagal maka ia mundur ke mekanisme transportasi lainnya, seperti Ajax , pemungutan suara panjang , dll. Setelah koneksi dibuat, server tornado ** (sockjs-tornado) ** terhubung ke Mosquitto melalui protokol mqtt menggunakan mqtt python klien klien , python klien, python klien python.
Dengan demikian koneksi adalah browser web ke tornado ke Mosquitto dan sebaliknya.
| sockjs-client: | Klien Websocket JavaScript Lanjutan |
|---|---|
| Angin topan: | Perpustakaan Web Async Python + Server Web |
| Sockjs-Tornado: | Sockjs Websocket Server Implementasi untuk Tornado |
| MQTT: | Protokol konektivitas mesin-ke-mesin (M2M)/"Internet of Things" |
| Paho-mqtt: | Perpustakaan Klien MQTT Python |
| Mosquitto: | Pialang pesan yang mengimplementasikan MQTT di C |
| Pytest: | Perpustakaan Pengujian Python dan Test Runner dengan Tes Discobery yang Luar Biasa |
| Pytest-Flask: | Plugin Pytest untuk aplikasi Flask, untuk menguji aplikasi Fask menggunakan Pytest Library. |
| Uber's Test-Double: | Uji Perpustakaan Ganda untuk Python, alternatif yang bagus untuk perpustakaan tiruan |
| Jenkins (opsional): | Server CI yang diselenggarakan sendiri |
| Travis-ci (opsional): | Server CI yang di-host gratis untuk projec open-source |
| Buruh pelabuhan: | Alat kontainerisasi untuk devop yang lebih baik |
Ada dua jenis instalasi. Satu menggunakan rabbitchat sebagai biner dengan menginstal dari PIP dan menjalankan aplikasi di mesin lokal secara langsung. Metode lain adalah menjalankan aplikasi dari Docker. Oleh karena itu satu set langkah instalasi lain untuk kasus penggunaan Docker.
Untuk Safegurad Secret dan Rahasia Data Kebocoran melalui GIT Anda berkomitmen untuk repo GitHub publik, periksa git-secrets .
Proyek Git Secrets ini membantu mencegah kebocoran mengeluarkan kesalahan.
Lihat, ada begitu banyak teknologi yang digunakan yang disebutkan dalam spesifikasi teknologi, namun ketergantungannya hanya dua. Ini adalah kekuatan Docker.
Langkah 1 - Instal Docker
Ikuti proyek GitHub saya yang lain, di mana segala sesuatu yang berkaitan dengan DevOps dan skrip disebutkan bersama dengan menyiapkan lingkungan pengembangan untuk menggunakan Docker disebutkan.
- Proyek: https://github.com/anirbanroydas/devops
Langkah 2 - Instal Make
# (Mac OS) $ brew install automake # (Ubuntu) $ sudo apt-get update $ sudo apt-get install make
Langkah 3 - Pasang dependensi
Instal dependensi berikut pada mesin pengembangan lokal Anda yang akan digunakan dalam berbagai skrip.
$ pip instal Mosquittochat
Jika ketergantungan di atas tidak diinstal oleh perintah di atas, maka gunakan langkah -langkah di bawah untuk menginstalnya satu per satu.
Langkah 1 - Pasang Pip
Ikuti metode di bawah ini untuk memasang PIP. Salah satunya dapat membantu Anda menginstal PIP di sistem Anda.
- Metode 1 - https://pip.pypa.io/en/stable/installing/
- Metode 2- http://ask.xmodulo.com/install-pip-linux.html
- Metode 3 - Jika Anda menginstal Python di Mac OS X melalui
brew install python, maka PIP sudah diinstal bersama dengan Python.Langkah 2 - Instal Tornado
$ pip menginstal tornadoLangkah 3 - Pasang Sockjs -Tornado
$ Pip Instal Sockjs-TornadoLangkah 4 - Instal Paho -MQTT
$ Pip Instal Paho-MQTTLangkah 5 - Instal Mosquitto
Untuk pengguna
Mac1. BREW INSTAL MOSQUITTO
$ brew instal mosquitto
- Konfigurasikan Mosquitto, dengan memodifikasi file di
/usr/local/etc/mosquitto/mosquitto.conf.Untuk pengguna
Ubuntu/Linux
Aktifkan repositori Mosquitto (opsional)
Pertama -tama coba langsung, jika tidak berhasil, lalu ikuti langkah ini dan lanjutkan setelah ini.:
$ sudo apt-add-repositori PPA: Mosquitto-dev/Mosquitto-PPA2. Perbarui sumber dengan tambahan baru kami dari atas
$ APT-GET UPDATE3. Dan akhirnya, unduh dan instal Mosquitto
$ sudo apt-get install mosquitto
- Konfigurasikan Mosquitto, dengan memodifikasi file di
/usr/local/etc/mosquitto/mosquitto.conf.
Jika Anda menggunakan proyek dalam pengaturan CI (seperti Travis, Jenkins), maka, pada setiap dorongan ke GitHub, Anda dapat mengatur pipa Travis Build atau Jenkins Anda. Travis akan menggunakan file .travis.yml dan Jennis akan menggunakan Jenkinsfile untuk melakukan pekerjaan mereka. Sekarang, jika Anda menggunakan Travis, lalu jalankan perintah pengaturan spesifik Travis dan untuk Jenkins menjalankan perintah pengaturan spesifik Jenkins terlebih dahulu. Anda juga dapat menggunakan keduanya untuk membandingkan kinerja antara yang ada.
Kunci pengaturan membaca nilai -nilai dari file .env yang memiliki semua variabel lingkungan diekspor. Tetapi Anda akan melihat contoh file env dan bukan file .env . Pastikan untuk menyalin file env ke .env dan ubah/ubah variabel aktual dengan nilai nyata Anda.
File .env tidak berkomitmen untuk git karena mereka disebutkan dalam file .gitignore untuk mencegah kebocoran data rahasia.
Setelah Anda menjalankan perintah pengaturan, Anda akan disajikan dengan sejumlah kunci aman. Salin itu ke file konfigurasi Anda sebelum melanjutkan.
Catatan: Ini adalah pengaturan satu kali. Catatan: Periksa skrip pengaturan di dalam scripts/ direktori untuk memahami apa variabel lingkungan yang tombol terenkripsi disediakan. Catatan: Jangan lupa menyalin kunci aman ke .travis.yml atau Jenkinsfile Anda
Catatan: Jika Anda tidak ingin melakukan salinan .env env mengubah nilai variabel di .env dengan nilai nyata Anda maka Anda dapat mengedit skrip travis-setup.sh atau jenknis-setup.sh dan memperbarui nilai-nilainya secara langsung. Skrip ada di direktori scripts/ tingkat proyek.
PENTING: Anda harus menjalankan skrip travis-setup.sh atau skrip jenkins-setup.sh di mesin lokal Anda sebelum digunakan ke server jarak jauh.
Langkah -langkah ini akan mengenkripsi variabel lingkungan Anda untuk mengamankan data rahasia Anda seperti kunci API, tombol berbasis Docker, menggunakan tombol spesifik.
$ membuat travis-setup
Langkah -langkah ini akan mengenkripsi variabel lingkungan Anda untuk mengamankan data rahasia Anda seperti kunci API, tombol berbasis Docker, menggunakan tombol spesifik.
$ membuat jenkins-setup
Ada dua jenis penggunaan. Satu menggunakan rabbitchat sebagai biner dengan menginstal dari PIP dan menjalankan aplikasi di mesin lokal secara langsung. Metode lain adalah menjalankan aplikasi dari Docker. Oleh karena itu satu set langkah penggunaan lain untuk kasus penggunaan Docker.
Setelah menginstal dependensi di atas, dan menjalankan opsional (jika tidak menggunakan server CI apa pun) atau diperlukan (jika menggunakan server CI apa pun) Langkah Pengaturan CI , maka cukup jalankan perintah berikut untuk menggunakannya:
Anda dapat menjalankan dan menguji aplikasi di mesin pengembangan lokal Anda atau Anda dapat menjalankan dan menguji langsung di mesin jarak jauh. Anda juga dapat menjalankan dan menguji di lingkungan produksi.
Perintah di bawah ini akan dimulai semuanya dalam lingkungan pengembangan. Untuk memulai di lingkungan produksi, akhiran -prod untuk setiap perintah membuat .
Misalnya, jika perintah normal make start , maka untuk lingkungan produksi, gunakan make start-prod . Lakukan modifikasi ini untuk setiap perintah yang ingin Anda jalankan di lingkungan produksi.
Pengecualian: Anda tidak dapat menggunakan metode di atas untuk perintah uji, perintah uji adalah sama untuk setiap lingkungan. Juga perintah make system-prune adalah mandiri tanpa variasi spesifik produksi NO (tetap sama di semua lingkungan).
Mulai Applcation
$ membuat bersih $ membuat build $ Make Start # ATAU $ Docker -Compose up -D
Hentikan aplikasi
$ Make Stop # ATAU $ Docker-Compose Stop
Hapus dan Bersihkan Aplikasi
$ membuat bersih # ATAU $ Docker -Compose RM --Force -V $ echo "y" | Sistem Docker Prune
Sistem bersih
$ Make System-Prune # ATAU $ echo "y" | Sistem Docker Prune
Untuk memeriksa seluruh log aplikasi
$ Make check-log # ATAU $ Docker-Compose Logs-Follow-Tail = 10
Untuk memeriksa log App Python
$ Make check-log-app # ATAU $ Docker-Compose Logs-Follow-Tail = 10 Identidock
Setelah menginstal Mosquittochat, cukup jalankan perintah berikut untuk menggunakannya:
Server Mosquitto
1. Untuk pengguna Mac
# Mulai secara normal $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf # Jika Anda ingin berlari di latar belakang $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf -d # Mulai menggunakan layanan pembuatan bir (tidak berfungsi dengan tmux, meskipun ada perbaikan, disebutkan dalam salah satu permintaan dan masalah tarik) $ Layanan Pembuatan Bir Mulai Mosquitto
2. Untuk pengguna Ubuntu/LInux
# Mulai secara normal $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf # Jika Anda ingin berlari di latar belakang $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf -d # Untuk mulai menggunakan layanan $ Sudo Service Mosquitto Mulai # Untuk berhenti menggunakan layanan $ Sudo Service Mosquitto Stop # Untuk memulai kembali menggunakan layanan $ Sudo Service Mosquitto Restart # Untuk memeriksa statusnya $ service status mosquitto
Mulai applcation Mosquittochat
$ Mosquittochat [Opsi]
Opsi
| --pelabuhan: | Nomor port di mana server obrolan akan dimulai |
|---|
Contoh
$ Mosquittochat --port = 9191
Hentikan server Mosquittochat
Klik Ctrl+C untuk menghentikan server.
Catatan: Pengujian hanya dilakukan dengan menggunakan metode Docker. Bagaimanapun, seharusnya tidak masalah apakah Anda menjalankan aplikasi Anda menggunakan metode Docker atau metode mandiri. Pengujian tidak tergantung pada itu.
Sekarang, pengujian adalah kesepakatan utama dari proyek ini. Anda dapat menguji dalam banyak hal, yaitu, menggunakan perintah make seperti yang disebutkan dalam perintah di bawah ini, yang mengotomatiskan segalanya dan Anda tidak harus tahu apa pun, seperti pustaka tes atau kerangka kerja apa yang digunakan, bagaimana tes terjadi, baik secara langsung atau melalui wadah docker , atau mungkin merupakan lingkungan virtual yang berbeda menggunakan tox . Tidak ada yang perlu diketahui.
Di sisi lain jika Anda ingin kontrol yang baik atas tes, maka Anda dapat menjalankannya secara langsung, baik dengan menggunakan perintah pytest , atau melalui perintah tox untuk menjalankannya di lingkungan Python yang berbeda atau dengan menggunakan perintah docker-compose untuk menjalankan tes berbeda.
Tetapi menjalankan perintah Make adalah lawasy yang pergi ke strategi dan pendekatan yang direkomendasikan untuk proyek ini.
Catatan: TOX dapat digunakan secara langsung, di mana wadah docker tidak akan digunakan. Although we can try to run tox inside our test contianers that we are using for running the tests using the make commands, but then we would have to change the Dockerfile and install all the python dependencies like python2.7 , python3.x and then run tox commands from inside the docker containers which then run the pytest commands which we run now to perform our tests inside the current test containers.
Peringatan: Satu -satunya peringatan menggunakan perintah Make secara langsung dan tidak menggunakan tox adalah kami hanya menguji proyek dalam lingkungan python tunggal, Nameley python 3.6 .
Untuk menguji semuanya
$ membuat tes
Metode lain tanpa menggunakan Make akan melibatkan penulisan banyak perintah. Jadi gunakan perintah make the preferrand
Untuk melakukan tes unit
$ membuat unit-unit
Untuk melakukan tes komponen
$ membuat komponen tes
Untuk melakukan tes kontrak
$ membuat kontrak tes
Untuk melakukan tes integrasi
$ membuat tes-integrasi
Untuk melakukan ujung ke ujung (E2E) atau sistem atau penerimaan UI atau tes fungsional
$ Make Test-E2E # ATAU $ membuat sistem tes # ATAU $ Make Test-U-Icceptance # ATAU $ membuat test-functional