MQTT โปรโตคอลการแชทเซิร์ฟเวอร์/แชทระบบโดยใช้นายหน้า Mosquitto, พายุทอร์นาโดเป็นเว็บเซิร์ฟเวอร์, sockjs ในไคลเอนต์ (เบราว์เซอร์) ไลบรารี JavaScript, Sockjs-tornado เป็น Sockjs ที่ใช้งานด้านเซิร์ฟเวอร์และ PAHO-MQTT
ลิงค์: http://mosquittochat.readthedocs.io/en/latest/
ลิงค์: https://pypi.python.org/pypi/mosquittochat
| ผู้เขียน: | Anirban Roy Das |
|---|---|
| อีเมล: | [email protected] |
| ลิขสิทธิ์ (c): | 2017, Anirban Roy Das <[email protected]> |
ตรวจสอบไฟล์ mosquittoChat/LICENSE สำหรับการแจ้งลิขสิทธิ์เต็มรูปแบบ
MosquittoChat เป็นเซิร์ฟเวอร์แชทแบบง่ายที่ใช้ MQTT โปรโตคอลซึ่งสามารถตั้งค่าได้ในพื้นที่เพื่อแชทใน LAN ของคุณ สนับสนุนทั้ง การแชทสาธารณะ ในหมู่ผู้เข้าร่วมทั้งหมดที่เชื่อมต่อพร้อมกันในเวลาใดเวลาหนึ่งและยัง แชทส่วนตัว ระหว่างผู้เข้าร่วมแต่ละคน
มันใช้โปรโตคอล MQTT เพื่อใช้ระบบส่งข้อความแบบเรียลไทม์ MQTT ถูกนำไปใช้ในหลายภาษาและในซอฟต์แวร์หลายแห่งหนึ่งในนั้นคือ Mosquitto ซึ่งเป็นนายหน้าข้อความที่ใช้โปรโตคอล MQTT
การเชื่อมต่อถูกสร้างขึ้นโดยใช้โปรโตคอล SOCKJS SOCKJS มีการใช้งานในหลายภาษาโดยเฉพาะอย่างยิ่งใน JavaScript เพื่อพูดคุยกับเซิร์ฟเวอร์แบบเรียลไทม์ซึ่งพยายามสร้างการเชื่อมต่อแบบสองทิศทางแบบดูเพล็กซ์ระหว่าง ไคลเอนต์ (เบราว์เซอร์) และ เซิร์ฟเวอร์ เซิร์ฟเวอร์เธอควรใช้โปรโตคอล Sockjs ดังนั้นการใช้ห้องสมุด Sockjs-tornado ซึ่งเปิดเผยโปรโตคอล Sockjs ในเซิร์ฟเวอร์พายุทอร์นาโด
ก่อนอื่นพยายามสร้างการเชื่อมต่อ WebSocket และถ้ามันล้มเหลวก็จะสลับกับกลไกการขนส่งอื่น ๆ เช่น Ajax , การสำรวจระยะยาว ฯลฯ หลังจากการเชื่อมต่อถูกสร้างขึ้นแล้วเซิร์ฟเวอร์พายุทอร์นาโด ** (Sockjs-tornado) ** เชื่อมต่อกับ Mosquitto
ดังนั้นการเชื่อมต่อคือ เว็บเบราว์เซอร์ ไปยัง พายุทอร์นาโด ไปยัง Mosquitto และในทางกลับกัน
| Sockjs-client: | ไคลเอนต์ JavaScript ขั้นสูง |
|---|---|
| พายุทอร์นาโด: | Async Python Web Library + เว็บเซิร์ฟเวอร์ |
| Sockjs-tornado: | การใช้งาน Sockjs WebSocket Server สำหรับพายุทอร์นาโด |
| mqtt: | โปรโตคอลการเชื่อมต่อแบบเครื่องกับเครื่องจักร (M2M)/"Internet of Things" |
| PAHO-MQTT: | ไลบรารีไคลเอนต์ MQTT Python |
| Mosquitto: | นายหน้าข้อความที่ใช้ MQTT ใน C |
| pytest: | ไลบรารีการทดสอบ Python และนักวิ่งทดสอบด้วยการทดสอบที่ยอดเยี่ยม |
| pytest-flask: | ปลั๊กอิน Pytest สำหรับแอพ Flask เพื่อทดสอบแอพ Fask โดยใช้ไลบรารี PyTest |
| การทดสอบของ Uber: | ทดสอบไลบรารีคู่สำหรับ Python ทางเลือกที่ดีสำหรับห้องสมุดเยาะเย้ย |
| เจนกินส์ (ไม่บังคับ): | เซิร์ฟเวอร์ CI ที่โฮสต์ตนเอง |
| Travis-CI (ไม่บังคับ): | เซิร์ฟเวอร์ CI ที่โฮสต์ฟรีสำหรับ projecs โอเพนซอร์ซ |
| นักเทียบท่า: | เครื่องมือคอนเทนเนอร์สำหรับ DevOps ที่ดีกว่า |
มีการติดตั้งสองประเภท หนึ่งที่ใช้ rabbitchat เป็นไบนารีโดยการติดตั้งจาก PIP และเรียกใช้แอปพลิเคชันในเครื่องท้องถิ่นโดยตรง อีกวิธีหนึ่งคือการเรียกใช้แอปพลิเคชันจาก Docker ดังนั้นอีกชุดหนึ่งของขั้นตอนการติดตั้งสำหรับเคสใช้ Docker
หากต้องการป้องกันความลับและการรั่วไหลของข้อมูลที่เป็นความลับผ่านทาง Git ของคุณมุ่งมั่นที่จะ repo สาธารณะ GitHub ตรวจสอบ git-secrets
โครงการ Git Secrets นี้ช่วยในการป้องกันการรั่วไหลของการรั่วไหลโดยไม่ได้ตั้งใจ
ดูสิมีเทคโนโลยีมากมายที่ใช้ที่กล่าวถึงในข้อกำหนดด้านเทคโนโลยีและการพึ่งพาเป็นเพียงสอง นี่คือพลังของนักเทียบท่า
ขั้นตอนที่ 1 - ติดตั้ง Docker
ติดตามโครงการ GitHub อื่นของฉันซึ่งทุกสิ่งที่เกี่ยวข้องกับ DevOps และสคริปต์ถูกกล่าวถึงพร้อมกับการตั้งค่าการพัฒนาสภาพแวดล้อมเพื่อใช้ Docker ถูกกล่าวถึง
- โครงการ: https://github.com/anirbanroydas/devops
ขั้นตอนที่ 2 - ติดตั้ง Make
# (Mac OS) $ BREW ติดตั้ง Automake # (Ubuntu) $ sudo apt-get update การติดตั้ง $ sudo apt-get make
ขั้นตอนที่ 3 - ติดตั้งการพึ่งพา
ติดตั้งการพึ่งพาต่อไปนี้ในเครื่องพัฒนาในพื้นที่ของคุณซึ่งจะใช้ในสคริปต์ต่างๆ
$ pip ติดตั้ง mosquittochat
หากการพึ่งพาข้างต้นไม่ได้รับการติดตั้งโดยคำสั่งด้านบนให้ใช้ขั้นตอนด้านล่างเพื่อติดตั้งทีละตัว
ขั้นตอนที่ 1 - ติดตั้ง PIP
ทำตามวิธีด้านล่างสำหรับการติดตั้ง PIP หนึ่งในนั้นอาจช่วยให้คุณติดตั้ง PIP ในระบบของคุณ
- วิธีที่ 1 - https://pip.pypa.io/en/stable/installing/
- วิธีที่ 2- http://ask.xmodulo.com/install-pip-linux.html
- วิธีที่ 3 - หากคุณติดตั้ง Python บน Mac OS X ผ่าน
brew install pythonจากนั้น PIP จะถูกติดตั้งแล้วพร้อมกับ Pythonขั้นตอนที่ 2 - ติดตั้งพายุทอร์นาโด
$ pip ติดตั้งพายุทอร์นาโดขั้นตอนที่ 3 - ติดตั้ง Sockjs -tornado
$ PIP ติดตั้ง Sockjs Tornadoขั้นตอนที่ 4 - ติดตั้ง PAHO -MQTT
$ pip ติดตั้ง paho-mqttขั้นตอนที่ 5 - ติดตั้ง mosquitto
สำหรับ ผู้ใช้
Mac1. การติดตั้ง Mosquitto
$ brew ติดตั้ง mosquitto
- กำหนดค่า mosquitto โดยการแก้ไขไฟล์ที่
/usr/local/etc/mosquitto/mosquitto.confสำหรับ ผู้ใช้
Ubuntu/Linux
เปิดใช้งานที่เก็บ Mosquitto (ไม่บังคับ)
ก่อนอื่นลองโดยตรงถ้ามันไม่ทำงานให้ทำตามขั้นตอนนี้และดำเนินการต่อหลังจากนี้:
$ sudo apt-add-repository ppa: mosquitto-dev/mosquitto-ppa2. อัปเดตแหล่งที่มาด้วยการเพิ่มใหม่ของเราจากด้านบน
การอัปเดต $ apt-get3. และสุดท้ายดาวน์โหลดและติดตั้ง mosquitto
$ sudo apt-get ติดตั้ง mosquitto
- กำหนดค่า mosquitto โดยการแก้ไขไฟล์ที่
/usr/local/etc/mosquitto/mosquitto.conf
หากคุณกำลังใช้โครงการในการตั้งค่า CI (เช่น Travis, Jenkins) จากนั้นทุกครั้งที่ผลักดันไปยัง GitHub คุณสามารถตั้งค่า Travis Build หรือ Jenkins ของคุณได้ เทรวิสจะใช้ไฟล์ .travis.yml และ Jenknis จะใช้ Jenkinsfile เพื่อทำงานของพวกเขา ตอนนี้ในกรณีที่คุณใช้เทรวิสจากนั้นเรียกใช้คำสั่งการตั้งค่าเฉพาะของเทรวิสและสำหรับเจนกินส์เรียกใช้คำสั่งการตั้งค่าเฉพาะของเจนกินส์ก่อน คุณยังสามารถใช้ทั้งสองอย่างเพื่อเปรียบเทียบระหว่างประสิทธิภาพ
คีย์การตั้งค่าอ่านค่าจากไฟล์ .env ซึ่งมีตัวแปรสภาพแวดล้อมทั้งหมดส่งออก แต่คุณจะสังเกตเห็นไฟล์ env ตัวอย่างไม่ใช่ไฟล์. .env ตรวจสอบให้แน่ใจว่าได้คัดลอกไฟล์ env เป็น .env และ เปลี่ยน/แก้ไข ตัวแปรจริงด้วยค่าจริงของคุณ
ไฟล์ .env ไม่ได้มุ่งมั่นที่จะ GIT เนื่องจากมีการกล่าวถึงในไฟล์ .gitignore เพื่อป้องกันการรั่วไหลของข้อมูลที่เป็นความลับ
หลังจากที่คุณเรียกใช้คำสั่งการตั้งค่าคุณจะได้รับคีย์ที่ปลอดภัยจำนวนหนึ่ง คัดลอกไฟล์เหล่านั้นไปยังไฟล์กำหนดค่าของคุณก่อนดำเนินการต่อ
หมายเหตุ: นี่คือการตั้งค่าครั้งเดียว หมายเหตุ: ตรวจสอบสคริปต์การตั้งค่าภายใน scripts/ ไดเรกทอรีเพื่อทำความเข้าใจว่าตัวแปรสภาพแวดล้อมคืออะไรที่มีปุ่มเข้ารหัส หมายเหตุ: อย่าลืม คัดลอก คีย์ที่ปลอดภัยไปยัง .travis.yml หรือ Jenkinsfile ของคุณ
หมายเหตุ: หากคุณไม่ต้องการทำสำเนาของไฟล์ env ไปยัง .env และเปลี่ยนค่าตัวแปรใน .env ด้วยค่าที่แท้จริงของคุณคุณสามารถแก้ไขสคริปต์ travis-setup.sh หรือ jenknis-setup.sh และอัปเดตค่าของพวกเขาโดยตรง สคริปต์อยู่ในไดเรกทอรี scripts/ ระดับโครงการ
สำคัญ: คุณต้องเรียกใช้สคริปต์ travis-setup.sh หรือสคริปต์ jenkins-setup.sh ในเครื่องท้องถิ่นของคุณก่อนที่จะปรับใช้กับเซิร์ฟเวอร์ระยะไกล
ขั้นตอนเหล่านี้จะเข้ารหัสตัวแปรสภาพแวดล้อมของคุณเพื่อรักษาความปลอดภัยข้อมูลที่เป็นความลับของคุณเช่นคีย์ API, คีย์ที่ใช้ Docker, ปรับใช้คีย์เฉพาะ
$ Make Travis-Setup
ขั้นตอนเหล่านี้จะเข้ารหัสตัวแปรสภาพแวดล้อมของคุณเพื่อรักษาความปลอดภัยข้อมูลที่เป็นความลับของคุณเช่นคีย์ API, คีย์ที่ใช้ Docker, ปรับใช้คีย์เฉพาะ
$ Make Jenkins-Setup
มีการใช้งานสองประเภท หนึ่งที่ใช้ rabbitchat เป็นไบนารีโดยการติดตั้งจาก PIP และเรียกใช้แอปพลิเคชันในเครื่องท้องถิ่นโดยตรง อีกวิธีหนึ่งคือการเรียกใช้แอปพลิเคชันจาก Docker ดังนั้นขั้นตอนการใช้งานอีกชุดหนึ่งสำหรับกรณีการใช้ Docker
หลังจากติดตั้งการพึ่งพาข้างต้นและเรียกใช้ ตัวเลือก (หากไม่ได้ใช้เซิร์ฟเวอร์ CI) หรือ จำเป็น (ถ้าใช้เซิร์ฟเวอร์ CI) ขั้นตอน การตั้งค่า CI จากนั้นเพียงเรียกใช้คำสั่งต่อไปนี้เพื่อใช้งาน:
คุณสามารถเรียกใช้และทดสอบแอพในเครื่องพัฒนาในพื้นที่ของคุณหรือคุณสามารถเรียกใช้และทดสอบโดยตรงในเครื่องระยะไกล คุณยังสามารถเรียกใช้และทดสอบในสภาพแวดล้อมการผลิต
คำสั่งด้านล่างจะเริ่มต้นทุกครั้งในสภาพแวดล้อมการพัฒนา ในการเริ่มต้นในสภาพแวดล้อมการผลิต -prod ท้ายคำ สั่ง ทุกคำสั่ง
ตัวอย่างเช่นหากคำสั่งปกติ make start แล้วสำหรับสภาพแวดล้อมการผลิตให้ใช้ make start-prod ทำการปรับเปลี่ยนนี้สำหรับแต่ละคำสั่งที่คุณต้องการทำงานในสภาพแวดล้อมการผลิต
ข้อยกเว้น: คุณไม่สามารถใช้วิธีการข้างต้นสำหรับคำสั่งทดสอบคำสั่งทดสอบจะเหมือนกันสำหรับทุกสภาพแวดล้อม นอกจากนี้คำสั่ง make system-prune นั้นเป็นแบบสแตนด์อโลนโดยไม่มีการเปลี่ยนแปลงเฉพาะการผลิต (ยังคงเหมือนเดิมในทุกสภาพแวดล้อม)
เริ่ม applcation
$ ทำให้สะอาด $ Make Build $ ทำให้เริ่มต้น # หรือ $ docker -compose up -d
หยุดแอปพลิเคชัน
$ Make Stop # หรือ $ docker-compose stop
ลบและทำความสะอาดแอปพลิเคชัน
$ ทำให้สะอาด # หรือ $ docker -compose rm -force -v $ echo "y" | Prune System Docker
ระบบทำความสะอาด
$ Make System-Prune # หรือ $ echo "y" | Prune System Docker
เพื่อตรวจสอบบันทึกแอปพลิเคชันทั้งหมด
$ Make Check-logs # หรือ $ docker-compose logs--follow--tail = 10
เพื่อตรวจสอบบันทึกของแอพ Python
$ Make Check-Logs-App # หรือ $ docker-compose logs--follow--tail = 10 identidock
หลังจากติดตั้ง mosquittochat เพียงเรียกใช้คำสั่งต่อไปนี้เพื่อใช้:
เซิร์ฟเวอร์ Mosquitto
1. สำหรับ ผู้ใช้ Mac
# เริ่มตามปกติ $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf # ถ้าคุณต้องการทำงานในพื้นหลัง $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf -d # เริ่มใช้บริการ Brew (ไม่ทำงานกับ TMUX, Athough มีการแก้ไขที่กล่าวถึงในคำขอดึงและปัญหาหนึ่ง) $ BREW Services เริ่มต้น Mosquitto
2. สำหรับ ผู้ใช้ Ubuntu/LInux
# เริ่มตามปกติ $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf # ถ้าคุณต้องการทำงานในพื้นหลัง $ mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf -d # เริ่มใช้บริการ $ Sudo Service Mosquitto Start # หยุดใช้บริการ Mosquitto บริการ $ sudo # เพื่อรีสตาร์ทโดยใช้บริการ การรีสตาร์ท Mosquitto บริการ $ sudo # เพื่อตรวจสอบสถานะ $ Service Mosquitto สถานะ
เริ่มต้น mosquittochat applcation
$ mosquittochat [ตัวเลือก]
ตัวเลือก
| --ท่าเรือ: | หมายเลขพอร์ตที่เซิร์ฟเวอร์แชทจะเริ่ม |
|---|
ตัวอย่าง
$ mosquittochat -พอร์ต = 9191
หยุดเซิร์ฟเวอร์ Mosquittochat
คลิก Ctrl+C เพื่อหยุดเซิร์ฟเวอร์
หมายเหตุ: การทดสอบทำได้โดยใช้วิธี Docker เท่านั้น อย่างไรก็ตามมันไม่สำคัญว่าคุณจะเรียกใช้แอปพลิเคชันของคุณโดยใช้วิธี Docker หรือวิธีการสแตนด์อโลน การทดสอบเป็นอิสระจากมัน
ตอนนี้การทดสอบเป็นเรื่องหลักของโครงการ คุณสามารถทดสอบได้หลายวิธีคือการใช้คำสั่ง make ตามที่กล่าวไว้ในคำสั่งด้านล่างซึ่งทำให้ทุกอย่างเป็นไปโดยอัตโนมัติและคุณไม่จำเป็นต้องรู้อะไรอีกเช่นการใช้ไลบรารีหรือกรอบการทดสอบสิ่งที่การทดสอบเกิดขึ้นโดยตรงหรือผ่านคอนเทนเนอร์ docker หรืออาจเป็นสภาพแวดล้อมเสมือนจริงที่แตกต่างกันโดยใช้ tox ไม่จำเป็นต้องเป็นที่รู้จัก
ในทางกลับกันหากคุณต้องการควบคุมการทดสอบที่ดีคุณสามารถเรียกใช้งานได้โดยตรงไม่ว่าจะโดยใช้คำสั่ง pytest หรือผ่านคำสั่ง tox เพื่อเรียกใช้ในสภาพแวดล้อม Python ที่แตกต่างกันหรือโดยใช้คำสั่ง docker-compose เพื่อเรียกใช้การทดสอบที่แตกต่างกัน
แต่การเรียกใช้คำสั่ง Make นั้นเป็นสิ่งที่ต้องทำตามกลยุทธ์และวิธีการที่ได้รับการแนะนำสำหรับโครงการนี้
หมายเหตุ: TOX สามารถใช้งานได้โดยตรงโดยที่คอนเทนเนอร์ docker จะไม่ถูกใช้ แม้ว่าเราสามารถลองใช้ tox ภายในการทดสอบของเราที่เราใช้สำหรับการเรียกใช้การทดสอบโดย docker คำสั่ง make แต่จากนั้นเราจะต้องเปลี่ยน Dockerfile และติดตั้งการพึ่งพา python ทั้งหมดเช่น python2.7 , python3.x แล้วเรียก pytest คำสั่ง tox
ข้อแม้: ข้อแม้เพียงข้อเดียวของการใช้คำสั่ง Make โดยตรงและไม่ได้ใช้ tox คือเรากำลังทดสอบโครงการในสภาพแวดล้อม python เดียวเท่านั้น Nameley python 3.6
เพื่อทดสอบทุกอย่าง
$ ทำการทดสอบ
วิธีอื่นใด ๆ โดยไม่ต้องใช้ Make จะเกี่ยวข้องกับการเขียนคำสั่งมากมาย ดังนั้นใช้คำสั่ง Make โดยเฉพาะอย่างยิ่ง
เพื่อทำการทดสอบหน่วย
$ Make Test-unit
เพื่อทำการทดสอบส่วนประกอบ
$ ทำองค์ประกอบทดสอบ
เพื่อทำการทดสอบสัญญา
$ ทำสัญญาทดสอบ
เพื่อทำการทดสอบการรวม
$ ทำให้การทดสอบการรวมกัน
เพื่อดำเนินการจบสิ้น (e2e) หรือระบบหรือการยอมรับ UI หรือการทดสอบการทำงาน
$ make test-e2e # หรือ $ ทำให้ระบบทดสอบ # หรือ $ ทำให้การทดสอบ -ui-acceptance # หรือ $ ทำให้การทดสอบฟังก์ชั่น