Hardlibの回答は100%対象ですが、実装についていくつかの考えを追加します。
私は、MQTTとの間違いは実際にはM2M(machine-to-machine)プロトコルであり、ユーザー間でメッセージをやりとりするシステムではないと考えています。それはあなたがメッセージングに使うことはできないと言っているわけではありませんが(facebook did)、それはMQTTの上のレイヤーに存在します。言い換えれば、MQTTは、メッセージの内容を気にせずにマシン間でメッセージをルーティングするように設計されています。つまり、ユーザーレベルの細かい点(配送の確認など)はMQTTの上に実装するものではなく、MQTTの上に実装するものです。
だからここにあなたがMQTTの上に提案するものを実装する方法についていくつかの考えです:
はあなたが両方とも同じブローカーへのアクセス権を持っている2つのクライアント(X & Z)を持っている状況を考えてみましょう(Y) 。クライアントXがクライアントZからメッセージを受信したことをクライアントXに確認させるには、単にクライアントXがクライアントZが購読しているトピック(確認/ zと言う)にメッセージを送信させます。これは、Pythonなどでアプリケーションを作成するのは簡単ではありません(たとえば、私はブローカの往復時間を測定するために基本的な手順を使用します)。
ただし、QoSによってブローカクライアントZがメッセージを受信した時刻をクライアントZが正確に知っていることが重要でない限り、これが本当に必要かどうか質問します。
必要に応じて、トピックの履歴を提供する方法はいくつでもあります。 MySQLの詳細については、hereおよびhereの回答を参照してください。ただし、チャットのローカル履歴やいくつかのトピックのアクティビティの記録が必要な場合は、タイムスタンプ付きのペイロードをテキストファイルまたはJSONに出力するだけで十分です。 MySQLは大量のメッセージを処理したり、複雑なクエリを作成したりする必要がある場合を除いて、過剰な使い方をしています。
出典
2017-06-26 23:35:28
blp
各パートの明確な回答をありがとう。もう1つのこと - ユーザーに配信する前にメッセージを処理するプラグインを追加することはできますか(スラングを確認するなど)?私はこれが推奨されないことを知っています。これはブローカーの減速につながりますが、私はそれを逃す前に傍受して処理する以外の方法はないと思います。 –
Mosquittoはオープンソースのソフトウェアです。あなたが望むことは何でもできます。しかし、他のブローカーの中には、その物のスーツにもっと適しているものがあるかもしれません。 – hardillb
フロントエンドで変更を加えるために正しいIDでメッセージを公開できるように、固有のメッセージID(クライアントとブローカーを問わず) –