На основе протокола на основе протокола/системы чата с использованием брокера Mosquitto, Tornado в качестве веб-сервера Sockjs в клиентской (браузер) библиотеку Javascript, Sockjs-Tornado в качестве реализации Sockjs на стороне сервера и Paho-MQTT (MQTT Python Client).
Ссылка: http://mosquittochat.readthedocs.io/en/latest/
Ссылка: https://pypi.python.org/pypi/mosquittochat
| Автор: | Анирбан Рой Дас |
|---|---|
| Электронная почта: | [email protected] |
| Авторские права (C): | 2017, Анирбан Рой Дас <[email protected]> |
Проверьте файл mosquittoChat/LICENSE на полное уведомление об авторском праве.
Mosquittochat - это простые чаты на основе протокола MQTT, который можно настроить локально для чата в вашей локальной сети. Он поддерживает оба общего чата среди всех участников, связанных одновременно в определенное время, а также в частном чате между этими отдельными участниками.
Он использует протокол MQTT для реализации системы передачи сообщений в реальном времени. MQTT реализован на многих языках, и во многих программных кровообращениях одним из таких является Mosquitto, который является брокером сообщений, внедряющим протокол MQTT.
Соединение создается с использованием протокола Sockjs. Sockjs реализован на многих языках, в основном в JavaScript, чтобы общаться с серверами в режиме реального времени, что пытается создать дуплексное двунаправленное соединение между клиентом (браузер) и сервером . На этом сервер также должен реализовать протокол Sockjs . Таким образом, используя библиотеку Sockjs-Tornado, которая обнажает протокол Sockjs на сервере Tornado.
Сначала он пытается создать соединение WebSocket, и, если оно не удается, то он отступает на другие транспортные механизмы, такие как Ajax , длинный опрос и т. Д. После установки соединения, сервер Tornado ** (Sockjs-Tornado) ** подключается к Mosquitto через MQTT Protocol с использованием клиентской библиотеки MQTT Python , Paho-Mqtt.
Таким образом, соединение является веб-браузером с торнадо с комаром и наоборот.
| sockjs-client: | Advanced WebSocket JavaScript Client |
|---|---|
| Торнадо: | Async Python Web Library + веб -сервер |
| sockjs-tornado: | Sockjs WebSocket Server реализация для торнадо |
| MQTT: | Протокол подключения к машине (M2M)/"Интернета вещей" |
| Paho-mqtt: | Клиентская библиотека MQTT Python |
| Комар: | Брокер сообщения, реализующий MQTT в C |
| pytest: | Библиотека тестирования Python и тестовый бегун с потрясающим тестовым дискокатом |
| Pytest-Flask: | Pytest Plugin для приложений Flask, для тестирования приложений Fask с использованием библиотеки Pytest. |
| Uber's Test-Double: | Проверьте двойную библиотеку для Python, хорошая альтернатива макете библиотеки |
| Дженкинс (необязательно): | Самостоятельный CI-сервер |
| Travis-Ci (необязательно): | Размещенный CI-сервер бесплатно для Projecs с открытым исходным кодом |
| Docker: | Инструмент контейнеризации для лучших DevOps |
Есть два типа установки. Один использует Rabbitchat в качестве бинарного путем установки от PIP и напрямую запускаю приложение в локальной машине. Другим методом является запуск приложения от Docker. Отсюда и другой набор шагов установки для варианта использования Docker.
Чтобы защитить секретную и конфиденциальную утечку данных с помощью вашего GIT Commits в Public Github Repo, проверьте git-secrets .
Этот проект GIT Secrets помогает предотвратить утечку секретов по ошибке.
Видите ли, в технических характеристиках упоминается так много технологий, и все же зависимости всего два. Это сила докера.
Шаг 1 - Установите Docker
Следуйте моему другому проекту GitHub, где упоминается все, что связано с DevOps и Scripts, наряду с настройкой среды разработки для использования Docker.
- Проект: https://github.com/anirbanroydas/devops
Шаг 2 - Установите Make
# (Mac OS) $ Brew Install Automake # (Ubuntu) $ sudo apt-get $ 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 install mosquitto
- Настройте Mosquitto, изменяя файл по адресу
/usr/local/etc/mosquitto/mosquitto.confmosquitto/mosquitto.conf.Для пользователей
Ubuntu/Linux
Включить хранилище комаров (необязательно)
Сначала попробуйте напрямую, если это не работает, затем следуйте этому шагу и продолжайте после этого.:
$ sudo apt-add-repository ppa: mosquitto-dev/mosquitto-pppa2. Обновите источники с нашим новым дополнением сверху выше
$ apt-get обновление3. И, наконец, скачать и установить кома
$ sudo apt-get установить кома
- Настройте Mosquitto, изменяя файл по адресу
/usr/local/etc/mosquitto/mosquitto.confmosquitto/mosquitto.conf.
Если вы используете проект в настройке CI (например, Travis, Jenkins), то, на каждом толчке к GitHub, вы можете настроить свой трубопровод Travis Build или Jenkins. Трэвис будет использовать файл .travis.yml , а Jenknis будет использовать Jenkinsfile для выполнения своей работы. Теперь, если вы используете Travis, затем запустите конкретные команды настройки Travis, а для Jenkins сначала запустите команды Denkins Special Setup. Вы также можете использовать оба для сравнения между производительностью.
Клавиши настройки считывают значения из файла .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 .
Например, если обычная команда make start , то для производственной среды используйте make start-prod . Сделайте это изменение в каждой команде, которую вы хотите запустить в производственной среде.
Исключения: вы не можете использовать приведенный выше метод для тестовых команд, тестовые команды одинаковы для каждой среды. Кроме того, команда make system-prune является автономной без специфических различий в производстве (остается одинаковым во всех средах).
Начальная приложения
$ сделать чистым $ сделать сборку $ make Start # ИЛИ $ docker -compose -d
Остановить заявление
$ сделать остановку # ИЛИ $ Docker-Compose Stop
Удалить и очистить нанесение
$ сделать чистым # ИЛИ $ docker -compose rm -force -v $ echo "y" | Docker System Trune
Чистая система
$ Make System-Prune # ИЛИ $ echo "y" | Docker System Trune
Чтобы проверить все журналы приложения
$ сделать чеки-логики # ИЛИ $ docker-compose logs-follow--tail = 10
Чтобы проверить только журналы приложения Python
$ make check-logs-app # ИЛИ $ docker-compose logs-follow--tail = 10 Identidock
После установки Mosquittochat просто запустите следующие команды, чтобы использовать его:
Mosquitto Server
1. Для пользователей Mac
# Начать нормально $ mosquitto -c/usr/local/etc/mosquitto/mosquitto.conf # Если вы хотите запустить в фоновом режиме $ mosquitto -c/usr/local/etc/mosquitto/mosquitto.conf -d # Начните использовать Brew Services (не работает с Tmux, Athough есть исправление, упомянутое в одном из запросов и проблем с привлечением) $ Brew Services Start 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 # Чтобы прекратить использование сервиса $ sudo Service Mosquitto Stop # Для перезапуска с помощью службы $ sudo Service Mosquitto перезапуск # Проверить статус $ Service Mosquitto статус
Начните применение комаров
$ mosquittochat [опции]
Параметры
| -порт: | Номер порта, где начнется сервер чата |
|---|
Пример
$ mosquittochat -порт = 9191
Остановите сервер Mosquittochat
Нажмите Ctrl+C , чтобы остановить сервер.
Примечание. Тестирование проводится только с помощью метода Docker. В любом случае, не должно иметь значения, запускаете ли вы свое приложение, используя метод Docker или автономный метод. Тестирование не зависит от этого.
Теперь тестирование является основной сделкой проекта. Вы можете протестировать во многих отношениях, а именно, используя команды make , как упомянуто в приведенных ниже командах, которые автоматизируют все, и вам не нужно ничего знать, например, как используется библиотека или структуру тестирования, как проводятся тесты, или через контейнеры docker , или могут быть разными виртуальными средами, использующими tox . Ничего не требуется, чтобы быть известным.
С другой стороны, если вы хотите точно управлять тестами, то вы можете запустить их напрямую, либо с помощью команд pytest , либо через команды tox для запуска их в различных средах Python, либо с помощью команд docker-compose для запуска тестирования различных.
Но запуск команд Make - это Lawasy The Go To Strategy и рекомендованный подход для этого проекта.
Примечание. Tox можно использовать напрямую, где контейнеры docker не будут использоваться. Хотя мы можем попытаться запустить tox внутри наших тестовых контактов, которые мы используем для запуска тестов, используя команды make , но затем нам пришлось бы изменить Dockerfile и установить все зависимости python , такие как python2.7 , python3.x , а затем запустить команды tox из контейнеров docker , которые затем запускают команды pytest , которые мы работаем, чтобы выполнить наши тесты внутри текущих контейнеров.
Предостережение: единственное предостережение в использовании команд Make напрямую и не использование tox - это то, что мы тестируем проект только в одной среде python , Nameley python 3.6 .
Чтобы проверить все
$ сделать тест
Любой другой метод без использования Make будет включать в себя написание много команд. Так что используйте команду MAKE предпочтительно
Чтобы выполнить модульные тесты
$ сделать тест-единицу
Для выполнения компонентных тестов
$ сделать тестовый компонент
Для выполнения контрактных тестов
$ сделать тестовый контракт
Для выполнения интеграционных тестов
$ сделать тест-интеграцией
Для выполнения конечного до конца (E2E) или системы или пользовательского интерфейса или функциональных тестов
$ make test-e2e # ИЛИ $ сделать тестовую систему # ИЛИ $ сделать тест-u-acceptance # ИЛИ $ сделать тестовый функциональный