Mosquitto Brokerを使用したMQTTプロトコルベースのチャットサーバー/チャットシステム、WebサーバーとしてのTornado、クライアント(ブラウザー)側のJavascriptライブラリのSockjs、Sockjs-Tornadoがサーバー側でのSockjsの実装、およびPaho-MQTT(MQTT Pythonクライアント)。
リンク: 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は、LANでチャットするためにローカルにセットアップできるMQTTプロトコルベースのシンプルチャットサーバーです。特定の時間に同時に接続されているすべての参加者の間でのパブリックチャットの両方をサポートし、それらの個々の参加者に賭けるプライベートチャットもサポートします。
MQTTプロトコルを使用して、リアルタイムメッセージパスシステムを実装します。 MQTTは多くの言語で実装されており、多くのソフトウェアでは、MQTTプロトコルを実装するメッセージブローカーであるMosquittoです。
接続は、SOCKJSプロトコルを使用して作成されます。 SOCKJSは多くの言語で実装されています。主にJavaScriptでリアルタイムでサーバーと通信し、クライアント(ブラウザー)とサーバーの間に二重方向接続を作成しようとします。 Ther Serverは、 SOCKJSプロトコルも実装する必要があります。したがって、TornadoサーバーでSockJSプロトコルを公開するSockjs-Tornadoライブラリを使用します。
最初にWebSocket接続を作成しようとします。失敗した場合、 AJAX 、長いポーリングなどの他の輸送メカニズムにフォールバックします。接続が確立された後、Tornado Server **(Sockjs-Tornado)**は、 MQTT Pythonクライアントライブラリを使用してMQTTプロトコルを介してMosquittoに接続します。
したがって、接続は、竜巻に蚊にあり、その逆のWebブラウザーです。
| sockjs-client: | 高度なWebSocket JavaScriptクライアント |
|---|---|
| 竜巻: | Async Python Webライブラリ + Webサーバー |
| Sockjs-Tornado: | 竜巻のSockjs WebSocketサーバーの実装 |
| MQTT: | Machine-to-Machine(M2M)/「モノのインターネット」接続プロトコル |
| PAHO-MQTT: | MQTT Pythonクライアントライブラリ |
| 蚊: | cでMQTTを実装するメッセージブローカー |
| pytest: | Pythonテストライブラリとテストランナーが素晴らしいテストDiscoberyを使用しています |
| pytest-flask: | Pytest Libraryを使用してFaskアプリをテストするためのFlaskアプリ用のPytestプラグイン。 |
| Uberのテストダブル: | Pythonのダブルライブラリをテストします。これは、模擬ライブラリに代わる優れた選択肢です |
| ジェンキンス(オプション): | 自己ホストされたCIサーバー |
| Travis-CI(オプション): | オープンソースプロジェック用にホストされたCIサーバーは無料です |
| Docker: | より良いDevOpsのためのコンテナ化ツール |
インストールには2つのタイプがあります。 PIPからインストールし、ローカルマシンでアプリケーションを直接実行することにより、Rabbitchatをバイナリとして使用します。別の方法は、Dockerからアプリケーションを実行することです。したがって、Dockerユースケースの別のインストール手順。
gitを介して秘密と機密データの漏れを保護するには、githubリポジトリにコミットして、 git-secrets確認してください。
このGit Secretsプロジェクトは、誤って秘密の漏れを防ぐのに役立ちます。
テクノロジーの仕様で言及されているテクノロジーは非常に多くありますが、依存関係は2つだけです。これがDockerの力です。
ステップ1- Dockerをインストールします
Dockerを使用するように開発環境を設定するとともに、DevOpsとスクリプトに関連するすべてが言及されている別のGitHubプロジェクトに従ってください。
- プロジェクト:https://github.com/anirbanroydas/devops
ステップ2-インストールmake
#(Mac OS) $ Brew Install Automake #(ubuntu) $ sudo apt-getアップデート $ sudo apt-getインストールmake
ステップ3-依存関係をインストールします
さまざまなスクリプトで使用されるローカル開発マシンに次の依存関係をインストールします。
$ pipインストールMosquittochat
上記の依存関係が上記のコマンドによってインストールされない場合は、以下の手順を使用して1つずつインストールします。
ステップ1-ピップをインストールします
PIPをインストールするための以下の方法に従ってください。そのうちの1つは、システムにPIPをインストールするのに役立ちます。
- 方法1 -https: //pip.pypa.io/en/stable/installing/
- 方法2- http://ask.xmodulo.com/install-pip-linux.html
- 方法3-
brew install pythonした場合、 PytonとともにPIPがすでにインストールされています。ステップ2-竜巻をインストールします
$ PIPインストールTornadoステップ3-Sockjs -Tornadoをインストールします
$ pipインストールSockjs-tornadoステップ4 -PAHO -MQTTをインストールします
$ pipインストールpaho-mqttステップ5-蚊をインストールします
Macユーザー向け1. brewインストール蚊
$ Brew Install Mosquitto
/usr/local/etc/mosquitto/mosquitto.confでファイルを変更して、Mosquittoを構成します。
Ubuntu/Linuxユーザー向け
蚊のリポジトリを有効にする(オプション)
最初に直接試してみてください、それが機能しない場合は、このステップに従ってこの後に続行してください。
$ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa2。上からの新しい追加でソースを更新します
$ apt-getアップデート3。そして最後に、Mosquittoをダウンロードしてインストールします
$ sudo apt-getインストール蚊
/usr/local/etc/mosquitto/mosquitto.confでファイルを変更して、Mosquittoを構成します。
CIセットアップ(Travis、Jenkinsなど)でプロジェクトを使用している場合は、Githubへのすべてのプッシュで、Travis BuildまたはJenkins Pipelineをセットアップできます。 Travisは.travis.ymlファイルを使用し、JenknisはJenkinsfileを使用して仕事をします。これで、Travisを使用している場合は、Travis固有のセットアップコマンドを実行し、Jenkinsの場合はJenkins固有のセットアップコマンドを最初に実行します。両方を使用して、そこのパフォーマンスを比較することもできます。
セットアップキーは、すべての環境変数がエクスポートされる.envファイルから値を読み取ります。ただし、 envファイルではなく、 .envファイルの例に気付くでしょう。 envファイルを.envにコピーし、実際の値で実際の変数を変更/変更してください。
.envファイルは、GITにはGITにコミットされていません。これは、機密データの漏れを防ぐために.gitignoreファイルに記載されているためです。
セットアップコマンドを実行すると、多くの安全なキーが表示されます。進行する前に、それらを構成ファイルにコピーします。
注:これは1回限りのセットアップです。注: scripts/ディレクトリ内のセットアップスクリプトをチェックして、暗号化されたキーが提供されている環境変数が何であるかを理解します。注:セキュアキーを.travis.ymlまたはJenkinsfileにコピーすることを忘れないでください
注: env to .envファイルのコピーを実行したくない場合は、実際の値を使用して.envの変数値を変更したくない場合は、 travis-setup.shまたはjenknis-setup.shスクリプトを編集し、値を直接更新できます。スクリプトは、 scripts/プロジェクトレベルのディレクトリにあります。
重要:リモートサーバーに展開する前に、ローカルマシンでtravis-setup.shスクリプトまたはjenkins-setup.shスクリプトを実行する必要があります。
これらの手順は、環境変数を暗号化して、APIキー、Dockerベースのキーなどの機密データを保護し、特定のキーを展開します。
$ travis-setupを作成します
これらの手順は、環境変数を暗号化して、APIキー、Dockerベースのキーなどの機密データを保護し、特定のキーを展開します。
$ Jenkins-Setupを作成します
使用法には2つのタイプがあります。 PIPからインストールし、ローカルマシンでアプリケーションを直接実行することにより、Rabbitchatをバイナリとして使用します。別の方法は、Dockerからアプリケーションを実行することです。したがって、Dockerユースケースの別の使用手順。
上記の依存関係をインストールし、オプションを実行した後(CIサーバーを使用していない場合)、または必要な(CIサーバーを使用している場合) CIセットアップステップを実行した後、次のコマンドを実行して使用するだけです。
ローカル開発マシンでアプリを実行してテストするか、リモートマシンで直接実行してテストすることができます。生産環境で実行およびテストすることもできます。
以下のコマンドは、開発環境ですべてのものを開始します。生産環境から開始するには、すべてのメイクコマンドに接尾辞-prod 。
たとえば、通常のコマンドがmake startいる場合、生産環境では、 make start-prod使用します。生産環境で実行する各コマンドにこの変更を行います。
例外:テストコマンドに上記の方法を使用することはできません。テストコマンドはすべての環境で同じです。また、 make system-pruneコマンドは、生産なしの変動がないスタンドアロンです(すべての環境で同じままです)。
アプリケーションを開始します
$きれいにします $ビルドを作成します $開始を行います # または $ docker -compose up -d
アプリケーションを停止します
$停止します # または $ docker-compose Stop
アプリケーションを削除してクリーニングします
$きれいにします # または $ docker -compose rm - force -v $ echo "y" | Docker System Prune
クリーンシステム
$ make system-prune # または $ echo "y" | Docker System Prune
アプリケーションログ全体を確認します
$チェックログを作成します # または $ docker-composeログ - フォロー - テール= 10
Pythonアプリのログのみを確認します
$ check-logs-appを作成します # または $ docker-composeログ - フォロー - テール= 10識別
Mosquittochatをインストールした後、次のコマンドを実行して使用してください。
蚊のサーバー
Macユーザーの場合
#正常に開始します $ mosquitto -c/usr/local/etc/mosquitto/mosquitto.conf #バックグラウンドで実行したい場合 $ mosquitto -c/usr/local/etc/mosquitto/mosquitto.conf -d #Brew Servicesの使用を開始します(TMUXでは動作しません。 $ Brew Servicesは蚊を開始します
2。Ubuntu 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 Restart #ステータスを確認するには $ Service Mosquittステータス
Mosquittochat Applcationを開始します
$ Mosquittochat [オプション]
オプション
| - ポート: | チャットサーバーが起動するポート番号 |
|---|
例
$ mosquittochat -port = 9191
Mosquittochatサーバーを停止します
Ctrl+Cをクリックしてサーバーを停止します。
注:テストは、Dockerメソッドを使用してのみ行われます。とにかく、Dockerメソッドを使用してアプリケーションを実行するか、スタンドアロンメソッドを使用しても関係ありません。テストはそれから独立しています。
現在、テストはプロジェクトの主な取引です。以下のコマンドに記載されているように、多くの方法でテストすることができます。これは、すべてを自動化し、テストライブラリやフレームワークが使用されているもの、直接またはmakeコンテナを介してテストがどのように発生しているか、またはdockerを使用して異なる仮想環境のいずれかtox知る必要はありません。何も知らない必要はありません。
一方、テストを細かく制御する場合は、 pytestコマンドを使用するか、 toxコマンドを介して異なるPython環境で実行するか、 docker-composeコマンドを使用してDiffereTnテストを実行することで、直接実行できます。
しかし、Makeコマンドを実行することは、このプロジェクトの戦略と再会のアプローチに行くことです。
注: TOXは、 dockerコンテナが使用されない場所で直接使用できます。 makeコマンドを使用してテストを実行するために使用しているテストコンタイナー内でtoxを実行しようとすることはできますが、 Dockerfile変更して、 python2.7 、 python3.xなどのすべてのpython依存関係をインストールし、 dockerコンテナ内からtox pytestを実行する必要があります。
警告: Makeコマンドを直接使用し、 toxを使用しないことの唯一の注意点は、単一のpython環境であるNameley python 3.6でのみプロジェクトをテストしていることです。
すべてをテストします
$テストします
Makeを使用せずに他の方法では、多くのコマンドを書くことが含まれます。したがって、Makeコマンドを好むように使用してください
ユニットテストを実行します
$ make test-unit
コンポーネントテストを実行します
$テスト成分を作成します
契約テストを実行します
$テスト契約を作成します
統合テストを実行します
$テスト統合を行います
エンドツーエンド(E2E)またはシステムまたはUIの受け入れまたは機能テストを実行する
$ make test-e2e # または $テストシステムを作成します # または $ test-ui-acceptanceを作成します # または $テスト官能的