نظام الدردشة/نظام الدردشة القائم على بروتوكول MQTT باستخدام وسيط البعوض ، Tornado كخادم ويب ، SockJs في مكتبة JavaScript الجانبية العميل (المتصفح) ، SockJS Tornado As SockJS على جانب الخادم و Paho-MQTT (MQTT Python Client).
الرابط: http://mosquittochat.readthedocs.io/en/latest/
الرابط: https://pypi.python.org/pypi/mosquittochat
| مؤلف: | أنيربان روي داس |
|---|---|
| بريد إلكتروني: | [email protected] |
| حقوق الطبع والنشر (ج): | 2017 ، Anirban Roy Das <[email protected]> |
تحقق من ملف mosquittoChat/LICENSE للحصول على إشعار حقوق الطبع والنشر الكاملة.
Mosquittochat هو خادم دردشة بسيط يعتمد على بروتوكول MQTT والذي يمكن إعداده محليًا للدردشة في LAN. وهو يدعم كل من الدردشة العامة بين جميع المشاركين المتصلين في وقت واحد في وقت معين وأيضًا دردشة خاصة تخصيص هؤلاء المشاركين الأفراد.
يستخدم بروتوكول MQTT لتنفيذ نظام تمرير الرسائل في الوقت الفعلي. يتم تنفيذ MQTT في العديد من اللغات وفي العديد من البرامج ، واحدة من هذه البعوض ، وهو وسيط الرسائل ينفذ بروتوكول MQTT.
يتم إنشاء الاتصال باستخدام بروتوكول SockJS. يتم تنفيذ SockJS بعدة لغات ، في المقام الأول في JavaScript للتحدث إلى الخوادم في الوقت الفعلي ، والتي تحاول إنشاء اتصال ثنائي الاتجاه دوبلكس بين العميل (المتصفح) والخادم . يجب أيضًا تطبيق SockJS بروتوكول SockJS . وبالتالي باستخدام مكتبة SockJS Tornado التي تعرض بروتوكول SockJS في خادم Tornado.
يحاول أولاً إنشاء اتصال WebSocket ، وإذا فشل ، فإنه يتوقف عن آليات النقل الأخرى ، مثل Ajax ، والاقتراع الطويل ، وما إلى ذلك بعد إنشاء الاتصال ، خادم Tornado ** (SockJS Tornado) ** يتصل إلى البعوض عبر بروتوكول MQTT باستخدام مكتبة عميل MQTT Python .
وبالتالي فإن الاتصال هو متصفح الويب إلى الإعصار للبعوض والعكس صحيح.
| Sockjs-Client: | عميل WebSocket JavaScript المتقدم |
|---|---|
| إعصار: | مكتبة الويب Async Python + خادم الويب |
| Sockjs Tornado: | Sockjs WebSocket Server تنفيذ Tornado |
| MQTT: | بروتوكول الاتصال من آلة إلى آلية (M2M)/"إنترنت الأشياء" |
| paho-mqtt: | مكتبة عميل MQTT Python |
| البعوض: | وسيط الرسائل ينفذ MQTT في C |
| Pytest: | مكتبة اختبار Python وعداء اختبار مع Discobery اختبار رائع |
| pytest-flask: | Pytest Plugin لتطبيقات Flask ، لاختبار تطبيقات FASK باستخدام مكتبة Pytest. |
| اختبار Uber Double: | اختبار مكتبة مزدوجة لبيثون ، بديل جيد لمكتبة وهمية |
| جنكينز (اختياري): | خادم CI مستضيف ذاتي |
| Travis-CI (اختياري): | خادم CI المستضافة مجانيًا |
| عامل ميناء: | أداة تنشيط الحاويات لتحسين DevOps |
هناك نوعان من التثبيت. واحد يستخدم Rabbitchat كثنائي عن طريق التثبيت من PIP وتشغيل التطبيق في الجهاز المحلي مباشرة. طريقة أخرى هي تشغيل التطبيق من Docker. وبالتالي مجموعة أخرى من خطوات التثبيت لحالة استخدام Docker.
إلى Safegurad تسرب البيانات السرية والسرية عبر GIT الخاص بك يلزم Github Repo العام ، تحقق من git-secrets .
يساعد مشروع GIT Secrets هذا في منع إفراز التسرب عن طريق الخطأ.
انظر ، هناك العديد من التقنيات المستخدمة في المواصفات التقنية ، ومع ذلك فإن التبعيات اثنتين فقط. هذه هي قوة Docker.
الخطوة 1 - تثبيت Docker
اتبع مشروع GitHub آخر ، حيث يتم ذكر كل ما يتعلق بـ DevOps والبرامج النصية إلى جانب إعداد بيئة تطوير لاستخدام Docker.
- المشروع: https://github.com/anirbanroydas/devops
الخطوة 2 - تثبيت جعل
# (Mac OS) $ Brew تثبيت Automake # (أوبونتو) $ sudo apt-get update $ sudo apt-get install make
الخطوة 3 - تثبيت التبعيات
قم بتثبيت التبعيات التالية على آلة التطوير المحلية التي سيتم استخدامها في البرامج النصية المختلفة.
$ pip تثبيت البعوض
إذا لم يتم تثبيت التبعيات المذكورة أعلاه بواسطة الأمر أعلاه ، فاستخدم الخطوات التالية لتثبيتها واحدة تلو الأخرى.
الخطوة 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 - تثبيت البعوض
لمستخدمي
Mac1.
$ brew تثبيت البعوض
- تكوين البعوض ، عن طريق تعديل الملف على
/usr/local/etc/mosquitto/mosquitto.conf.لمستخدمي
Ubuntu/LinuxLinux
تمكين مستودع البعوض (اختياري)
حاول أولاً مباشرة ، إذا لم تنجح ، ثم اتبع هذه الخطوة واستمر بعد ذلك.:
$ sudo apt-add-repository ppa: البعوض-dev/mosquitto-ppa2. قم بتحديث المصادر من خلال إضافتنا الجديدة من الأعلى
$ apt-get update3. وأخيرا ، قم بتنزيل وتثبيت البعوض
$ sudo apt-get instrant mosquitto
- تكوين البعوض ، عن طريق تعديل الملف على
/usr/local/etc/mosquitto/mosquitto.conf.
إذا كنت تستخدم المشروع في إعداد CI (مثل Travis ، Jenkins) ، ثم ، في كل دفعة إلى Github ، يمكنك إعداد خط أنابيب Travis أو Jenkins. سوف تستخدم Travis ملف .travis.yml وسيستخدم Jenknis Jenkinsfile للقيام بوظائفهم. الآن ، في حال كنت تستخدم Travis ، ثم قم بتشغيل أوامر الإعداد الخاصة بـ Travis ، وللجينكينز ، قم بتشغيل أوامر الإعداد الخاصة بـ Jenkins أولاً. يمكنك أيضًا استخدام كلاهما للمقارنة بين الأداء هناك.
تقرأ مفاتيح الإعداد القيم من ملف .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 ، ونشر مفاتيح محددة.
$ جعل travis-setup
ستقوم هذه الخطوات بتشفير متغيرات البيئة الخاصة بك لتأمين بياناتك السرية مثل مفاتيح API ، ومفاتيح Docker ، ونشر مفاتيح محددة.
$ جعل Jenkins-setup
هناك نوعان من الاستخدام. واحد يستخدم Rabbitchat كثنائي عن طريق التثبيت من PIP وتشغيل التطبيق في الجهاز المحلي مباشرة. طريقة أخرى هي تشغيل التطبيق من Docker. وبالتالي مجموعة أخرى من خطوات الاستخدام لحالة استخدام Docker.
بعد تثبيت التبعيات المذكورة أعلاه ، وقم بتشغيل خطوة إعداد CI الاختيارية (إن لم تكن تستخدم أي خادم CI) أو مطلوبة (إذا كنت تستخدم أي خادم CI) ، فما عليك سوى تشغيل الأوامر التالية لاستخدامها:
يمكنك تشغيل التطبيق واختباره في جهاز التطوير المحلي الخاص بك أو يمكنك التشغيل والاختبار مباشرة في جهاز بعيد. يمكنك أيضًا تشغيل واختبار بيئة الإنتاج.
ستبدأ الأوامر أدناه كل شيء في بيئة التطوير. للبدء في بيئة الإنتاج ، اللاحقة -prod لكل أمر يجعل .
على سبيل المثال ، إذا كان الأمر العادي make start ، فعليك لبيئة الإنتاج ، استخدم make start-prod . قم بهذا التعديل لكل أمر تريد تشغيله في بيئة الإنتاج.
الاستثناءات: لا يمكنك استخدام الطريقة أعلاه لأوامر الاختبار ، أوامر الاختبار هي نفسها لكل بيئة. كما أن الأمر make system-prune مستقل مع عدم وجود تباين محدد للإنتاج (لا يزال نفسه في جميع البيئات).
ابدأ Applcation
$ اجعل نظيفًا $ make Build $ ابدأ # أو $ docker -corm -d -d
توقف عن التطبيق
توقف $ # أو $ docker-compose توقف
قم بإزالة التطبيق وتنظيفه
$ اجعل نظيفًا # أو $ Docker -Corms RM -Force -V $ echo "y" | Docker System Brune
نظام نظيف
$ جعل النظام-برون # أو $ echo "y" | Docker System Brune
للتحقق من سجلات التطبيق بأكملها
$ قم بإجراء عمليات فحص الشيكات # أو سجلات $ docker-compose-متابعة-ذيل = 10
للتحقق فقط من سجلات تطبيق Python
$ جعل الشيكات-السطوانة-تطبيق # أو سجلات $ docker-compose-متابعة-ذيل = 10 IdentIdock
بعد تثبيت البعوض ، ما عليك سوى تشغيل الأوامر التالية لاستخدامها:
خادم البعوض
1. لمستخدمي Mac
# ابدأ بشكل طبيعي $ البعوض -c /usr/local/etc/mosquitto/mosquitto.conf # إذا كنت تريد الركض في الخلفية $ البعوض -c /usr/local/etc/mosquitto/mosquitto.conf -d # ابدأ في استخدام Brew Services (لا يعمل مع TMUX ، Athough هناك إصلاح ، مذكور في أحد طلبات السحب والقضايا) $ Brew Services تبدأ البعوض
2. لمستخدمي Ubuntu/LInux
# ابدأ بشكل طبيعي $ البعوض -c /usr/local/etc/mosquitto/mosquitto.conf # إذا كنت تريد الركض في الخلفية $ البعوض -c /usr/local/etc/mosquitto/mosquitto.conf -d # لبدء استخدام الخدمة $ sudo service mosquitto start # للتوقف عن استخدام الخدمة $ sudo service stop stop # لإعادة التشغيل باستخدام الخدمة $ sudo خدمة البعوض إعادة تشغيل # للتحقق من الحالة $ خدمة البعوض
بدء البعوض Applcation
$ البعوض [الخيارات]
خيارات
| --ميناء: | رقم المنفذ حيث سيبدأ خادم الدردشة |
|---|
مثال
$ البعوض -PORT = 9191
وقف خادم البعوض
انقر فوق Ctrl+C لإيقاف الخادم.
ملاحظة: يتم الاختبار فقط باستخدام طريقة Docker. على أي حال ، لا ينبغي أن يهم ما إذا كنت تقوم بتشغيل التطبيق الخاص بك باستخدام طريقة Docker أو الطريقة المستقلة. الاختبار مستقل عنه.
الآن ، الاختبار هو الصفقة الرئيسية للمشروع. يمكنك الاختبار بعدة طرق ، أي استخدام أوامر make كما هو مذكور في الأوامر أدناه ، والتي تتم أتمتة كل شيء ولا يتعين عليك معرفة أي شيء آخر ، مثل ما يتم استخدام مكتبة أو إطار عمل اختبار ، وكيفية حدوث الاختبارات ، إما مباشرة أو عبر حاويات docker ، أو قد تكون بيئات افتراضية مختلفة باستخدام tox . لا شيء مطلوب أن يكون معروفا.
من ناحية أخرى ، إذا كنت تريد التحكم الدقيق في الاختبارات ، فيمكنك تشغيلها مباشرة ، إما باستخدام أوامر pytest ، أو عبر أوامر tox لتشغيلها في بيئات بيثون مختلفة أو باستخدام أوامر docker-compose لتشغيل اختبارات مختلفة.
لكن تشغيل أوامر Make هو Lawasy Go to Strategy and Recomed Adption لهذا المشروع.
ملاحظة: يمكن استخدام Tox مباشرة ، حيث لن يتم استخدام حاويات docker . على الرغم من أننا يمكن أن نحاول تشغيل tox داخل منافسي الاختبار الذي نستخدمه لتشغيل الاختبارات باستخدام أوامر make ، ولكن بعد ذلك ، سيتعين علينا تغيير Dockerfile وتثبيت جميع تبعيات python مثل python2.7 ، python3.x ثم تشغيل أوامر tox من داخل حاويات docker التي تدير بعد ذلك أوامر pytest التي نقوم بها الآن إجراء اختباراتنا داخل الحاوية الحالية.
التحذير: التحذير الوحيد لاستخدام أوامر Make مباشرة وعدم استخدام tox هو أننا نقوم فقط باختبار المشروع في بيئة python واحدة ، Nameley python 3.6 .
لاختبار كل شيء
$ اجعل الاختبار
أي طريقة أخرى دون استخدام Make ستشمل كتابة الكثير من الأوامر. لذا استخدم الأمر MAKE بشكل مفضل
لإجراء اختبارات الوحدة
$ جعل وحدة الاختبار
لإجراء اختبارات المكونات
$ جعل مكون الاختبار
لإجراء اختبارات العقد
$ جعل الاختبار العقد
لإجراء اختبارات التكامل
$ جعل الاختبار التكامل
لأداء نهاية إلى النهاية (E2E) أو قبول النظام أو واجهة المستخدم أو الاختبارات الوظيفية
$ اجعل اختبار E2e # أو $ جعل نظام الاختبار # أو $ جعل اختبار ui-acceptance # أو $ اجعل الاختبار الوظيفي