MQTT.JSは、node.jsおよびブラウザ用のJavaScriptで記述されたMQTTプロトコルのクライアントライブラリです。
MQTT.JSはオープンオープンソースプロジェクトです。これが何を意味するかを調べるための貢献セクションを参照してください。
v5.0.0 (07/2023)
MqttClientインスタンスを作成するときは、 newが必要になります。v4.0.0 (リリース04/2020)は、すべての寿命ノードバージョンのサポートを削除し、Node V12とV14をサポートします。また、いくつかの機能の追加とともに、デバッグロギングに改善を追加します。
壊れた変更として、デフォルトではエラーハンドラーがMQTT.JSクライアントに組み込まれているため、エラーが発生し、ユーザーがクライアントにエラーのイベントハンドラーを作成していない場合、クライアントはハンドルされていないエラーの結果として壊れません。さらに、 ECONNREFUSEDような典型的なTLSエラー、 ECONNRESET MQTT.JSクライアントから放出されるTLSエラーのリストに追加されているため、接続エラーとして処理できます。
v3.0.0は、MQTT 5のサポート、ノードV10.xのサポート、および信頼性を向上させるための多くの修正を追加します。
注: MQTT V5サポートは、ブローカーによってまだ実装されていないため、実験的です。
v2.0.0は、ノードv0.8、v0.10、およびv0.12のサポートを削除し、パケットの送信が3倍高速です。また、主にmqtt.createConnectionとmqtt.Server v1.0.0のすべての非推奨機能を削除します。 v2.0.0から、サブスクリプションは再接続時に復元されますclean: true 。 V1.xxは現在LTSにあり、v0.8、v0.10、v0.12ユーザーがいる限り、サポートされ続けます。
壊れた変更として、古いクライアントのencodingオプションは削除され、現在、 Bufferであるパブリッシュメッセージの接続passwordとペイロードのpayloadを除き、すべてがUTF-8になります。
もう1つの壊れた変更は、MQTT.JSがMQTT V3.1.1にデフォルトであるようになったため、古いブローカーをサポートするために、クライアントオプションドキュメントをお読みください。
V1.0.0はプロジェクトの全体的なアーキテクチャを改善します。これは3つのコンポーネントに分割されます。MQTT.jsはクライアントを保持し、MQTT接続にはサーバー側の使用用のBarebone接続コードが含まれ、MQTT-Packetにはプロトコルパーサーと発電機が含まれます。新しいクライアントは、パフォーマンスを30%の要因で改善し、WebSocketサポートを埋め込み(MOWが廃止されました)、QOS 1および2をより適切にサポートしています。以前のAPIはまだサポートされていますが、このReadmeには文書化されていません。
npm install mqtt --save簡単にするために、サブスクライバーと出版社を同じファイルに入れましょう。
const mqtt = require ( "mqtt" ) ;
const client = mqtt . connect ( "mqtt://test.mosquitto.org" ) ;
client . on ( "connect" , ( ) => {
client . subscribe ( "presence" , ( err ) => {
if ( ! err ) {
client . publish ( "presence" , "Hello mqtt" ) ;
}
} ) ;
} ) ;
client . on ( "message" , ( topic , message ) => {
// message is Buffer
console . log ( message . toString ( ) ) ;
client . end ( ) ;
} ) ;出力:
Hello mqttMQTT.jsは、Reactネイティブアプリケーションで使用できます。それを使用するには、反応ネイティブの例を参照してください
独自のMQTTブローカーを実行したい場合は、MosquittoまたはAedes-Cliを使用して起動できます。
テストインスタンス:test.mosquitto.orgを使用することもできます。
別のブローカーをインストールしたくない場合は、AEDESを使用してみてください。
const mqtt = require ( "mqtt" ) // require mqtt
const client = mqtt . connect ( "mqtt://test.mosquitto.org" ) // create a client import mqtt from "mqtt" ; // import namespace "mqtt"
let client = mqtt . connect ( "mqtt://test.mosquitto.org" ) ; // create a client import { connect } from "mqtt" ; // import connect from mqtt
let client = connect ( "mqtt://test.mosquitto.org" ) ; // create a client MQTT.JSは、ブローカーと対話するコマンドをバンドルします。パスで使用できるようにするには、MQTT.jsをグローバルにインストールする必要があります。
npm install mqtt -g次に、1つの端末に
mqtt sub -t ' hello ' -h ' test.mosquitto.org ' -v別のものについて
mqtt pub -t ' hello ' -h ' test.mosquitto.org ' -m ' from MQTT.js 'コマンドヘルプについては、 mqtt help <command>を参照してください。
MQTT.JSは、デバッグ目的でデバッグパッケージを使用します。デバッグログを有効にするには、ランタイムに次の環境変数を追加します。
# ( example using PowerShell, the VS Code default )
$env:DEBUG='mqttjs*' Websocket接続の重要な部分は、接続がオフになり、クライアントが再接続する必要がある場合に対処することです。 MQTTには、アプリケーションに合った方法で動作するように構成できる組み込みの再接続サポートがあります。
transformWsUrl (WebSocketのみ)で認証オプション /署名されたURLを更新するMQTT接続がドロップして再接続する必要がある場合、接続に関連付けられた認証が基礎となるAUTHメカニズムに最新の状態に保たれることが必要です。たとえば、一部のアプリケーションでは、初期接続に接続オプションが付いたAUTHトークンに合格する場合がありますが、他のクラウドサービスでは、各接続でURLに署名する必要があります。
アプリケーションライフサイクルで再接続が発生するまでに、元の認証データが有効になっている可能性があります。
これに対処するために、 transformWsUrlというフックを使用して、再接続時に接続URLまたはクライアントオプションのいずれかを操作できます。
例(各再接続のClientIDとユーザー名を更新):
const transformWsUrl = ( url , options , client ) => {
client . options . username = `token= ${ this . get_current_auth_token ( ) } ` ;
client . options . clientId = ` ${ this . get_updated_clientId ( ) } ` ;
return ` ${ this . get_signed_cloud_url ( url ) } ` ;
}
const connection = await mqtt . connectAsync ( < wss url > , {
... ,
transformWsUrl : transformUrl ,
} );新しいWebSocket接続が開かれるたびに(できればあまり頻繁にはない)、新鮮な署名されたURLまたは新鮮な認証トークンデータが取得されます。
注:現在、このフックは約束をサポートしていません。つまり、最新のAUTHトークンを使用するには、WebSocket Connectionが最新の有効なトークンまたは署名されたURLを簡単につかむことができるように、アプリケーションレベルの認証を処理する外部メカニズムを実行する必要があります。
createWebsocket (websocketのみ)でWebSocketsをカスタマイズするカスタムWebsocketサブプロトコルまたはヘッダーを追加して、カスタム認証を使用したプロキシを介して接続を開く必要がある場合、このコールバックにより、MQTTクライアントで使用されるWebSocketの独自のインスタンスを作成できます。
const createWebsocket = ( url , websocketSubProtocols , options ) => {
const subProtocols = [
websocketSubProtocols [ 0 ] ,
'myCustomSubprotocolOrOAuthToken' ,
]
return new WebSocket ( url , subProtocols )
}
const client = await mqtt . connectAsync ( < wss url > , {
... ,
createWebsocket : createWebsocket ,
} );reconnectPeriodオプションで再接続を有効にしますMQTTクライアントが接続のドロップ時に自動的に再接続しようとすることを確認するには、クライアントオプションを0を超える値にreconnectPeriod値を設定する必要があります。
デフォルト値は1000ミリ秒です。つまり、接続を失った後、1秒再接続しようとします。
これにより、接続タイムアウトのいずれか、または接続が成功した後にのみ再接続できることに注意してください。サーバーによるコナックエラーで積極的に拒否された接続を再試行することはできません。
また、Connackエラーの自動再接続を有効にするには、 reconnectOnConnackError: trueを設定します。
クライアントがオプションをautoUseTopicAlias:true :mqtt.jsは既存のトピックエイリアスを自動的に使用します。
例のシナリオ:
1. PUBLISH topic: ' t1 ' , ta:1 (register)
2. PUBLISH topic: ' t1 ' - > topic: ' ' , ta:1 (auto use existing map entry)
3. PUBLISH topic: ' t2 ' , ta:1 (register overwrite)
4. PUBLISH topic: ' t2 ' - > topic: ' ' , ta:1 (auto use existing map entry based on the receent map)
5. PUBLISH topic: ' t1 ' (t1 is no longer mapped to ta:1)ユーザーは、どのトピックがどのトピックエイリアスにマッピングされているかを管理する必要はありません。ユーザーがトピックエイリアスを登録する場合は、トピックエイリアスでトピックを公開します。ユーザーがトピックエイリアスを使用する場合は、トピックエイリアスなしでトピックを公開します。マッピングされたトピックエイリアスがある場合は、プロパティとして追加し、トピックを空の文字列に更新します。
クライアントがオプションをautoAssignTopicAlias:trueを設定する場合、mqtt.jsは既存のトピックエイリアスを自動的に使用します。トピックエイリアスが存在しない場合は、新しい空いているトピックエイリアスを自動的に割り当てます。トピックエイリアスが完全に使用されている場合、LRU(最近使用されていない)トピックALIASエントリが上書きされます。
例のシナリオ:
The broker returns CONNACK (TopicAliasMaximum:3)
1. PUBLISH topic: ' t1 ' - > ' t1 ' , ta:1 (auto assign t1:1 and register)
2. PUBLISH topic: ' t1 ' - > ' ' , ta:1 (auto use existing map entry)
3. PUBLISH topic: ' t2 ' - > ' t2 ' , ta:2 (auto assign t1:2 and register. 2 was vacant)
4. PUBLISH topic: ' t3 ' - > ' t3 ' , ta:3 (auto assign t1:3 and register. 3 was vacant)
5. PUBLISH topic: ' t4 ' - > ' t4 ' , ta:1 (LRU entry is overwritten)また、ユーザーは公開トピックを使用してトピックアリアペアを手動で登録できます: 'some'、ta:x。自動トピックエイリアスの割り当てでうまく機能します。
mqtt.connect()mqtt.connectAsync()mqtt.Client()mqtt.Client#connect()mqtt.Client#publish()mqtt.Client#publishAsync()mqtt.Client#subscribe()mqtt.Client#subscribeAsync()mqtt.Client#unsubscribe()mqtt.Client#unsubscribeAsync()mqtt.Client#end()mqtt.Client#endAsync()mqtt.Client#removeOutgoingMessage()mqtt.Client#reconnect()mqtt.Client#handleMessage()mqtt.Client#connectedmqtt.Client#reconnectingmqtt.Client#getLastMessageId()mqtt.Store()mqtt.Store#put()mqtt.Store#del()mqtt.Store#createStream()mqtt.Store#close()指定されたURLとオプションで指定されたブローカーに接続し、クライアントを返します。
URLは、「MQTT」、「MQTTS」、「TCP」、「TLS」、「WS」、「WSS」、「WXS」、「ALIS」、次のプロトコル上にあることができます。 Unixソケットに接続しようとしている場合は、 +unixサフィックスをプロトコルに追加するだけです(例: mqtt+unix )。これにより、 unixSocketプロパティが自動的に設定されます。
URLは、 URL.parse()によって返されるオブジェクトでもあります。その場合、2つのオブジェクトがマージされます。つまり、URLと接続オプションの両方で単一のオブジェクトを渡すことができます。
コンテンツを含むserversオプションを指定することもできます[{ host: 'localhost', port: 1883 }, ... ]
すべてのMQTT関連オプションについては、クライアントコンストラクターを参照してください。
connect関数の周りの非同期ラッパー。
クライアントが'connect'または'end'イベントを発射するときにmqtt.Clientインスタンスに解決するPromiseを返します。または、 'error'が起動された場合、エラーを拒否します。
manualConnectオプションは、この関数によって返された約束が、基礎となるクライアントがイベントを解決しないため、解決または拒否しないようにすることに注意してください。
Clientクラスは、任意の輸送方法(TCP、TLS、WebSocket、ECC)を介してMQTTブローカーへのクライアント接続をラップします。 Clientは、独自のイベントを備えたEventeMitterです
Client自動的に以下を処理します。
議論は次のとおりです。
streamBuilder 、 connectイベントをサポートするStreamクラスのサブクラスを返す関数です。通常、 net.Socket 。optionsクライアント接続オプションです(Connect Packetを参照)。デフォルト: wsOptions :WebSocket接続オプションです。デフォルトは{}です。 WebSocketに固有のものです。可能なオプションについては、https://github.com/websockets/ws/blob/master/doc/ws.mdをご覧ください。
keepalive : 60秒、無効にするために0に設定します
reschedulePings :パケットを送信した後のpingメッセージを再スケジュールする(デフォルトはtrue )
clientId : 'mqttjs_' + Math.random().toString(16).substr(2, 8)
protocolId : 'MQTT'
protocolVersion : 4
clean : true 、QOS 1および2のメッセージをオフラインで受信するようにfalseに設定
reconnectPeriod : 1000ミリ秒、2つの再接続間の間隔。 0に設定して自動再接続を無効にします。
reconnectOnConnackError : false 、コナックがエラーで受信された場合に再接続するかどうか。
connectTimeout : 30 * 1000ミリ秒、コナックが受信されるまで待つ時間
username :ブローカーが必要とするユーザー名、もしあれば
password :ブローカーが必要とするパスワード(もしあれば
incomingStore :着信パケット用のストア
outgoingStore :発信パケット用のストア
queueQoSZero :接続が壊れている場合、キューの発信QoSゼロメッセージ(デフォルトtrue )
customHandleAcks :MQTT 5カスタム処理PubackおよびPubrecパケットの機能。そのコールバック:
customHandleAcks: function ( topic , message , packet , done ) { /*some logic with calling done(error, reasonCode)*/ } autoUseTopicAlias :機能を使用した自動トピックエイリアスを有効にします
autoAssignTopicAlias :自動トピックエイリアスを有効にする機能性を割り当てます
properties :プロパティMQTT 5.0。次のプロパティをサポートするobject :
sessionExpiryInterval :セッションの有効期限間隔を秒numberで表す、receiveMaximum :受信最大値numberを表す、maximumPacketSize :最大パケットサイズを表すクライアントは、 numberを受け入れることをいとわない、topicAliasMaximum :トピックエイリアスの最大値を表すことは、クライアントがサーバーnumberによって送信されたトピックエイリアスとして受け入れる最高値を示します。requestResponseInformation :クライアントはこの値を使用してサーバーにリクエストしてConnack booleanの応答情報を返します。requestProblemInformation :クライアントはこの値を使用して、 booleanの場合に文字列またはユーザープロパティが送信されるかどうかを示します。userProperties :ユーザープロパティは、複数の名前、値ペアobjectを表すために複数回表示することができます。authenticationMethod :拡張認証stringに使用される認証方法の名前、authenticationData :認証データbinaryを含むバイナリデータauthPacket :Auth Packet objectの設定
will :クライアントがひどく切断されたときにブローカーによって自動的に送信されるメッセージ。形式は次のとおりです。
topic :公開するトピックpayload :公開するメッセージqos :Qosretain :保持フラグproperties :MQTT 5.0による意志のプロパティ:willDelayInterval :秒numberで意志遅延間隔を表すpayloadFormatIndicator :メッセージはUTF-8エンコードされた文字データであるか、 booleanではありません、messageExpiryInterval :値は数秒単位でウィルメッセージの寿命であり、サーバーがウィルメッセージnumberを公開するときに公開の有効期限間隔として送信されます。contentType :Willメッセージstringのコンテンツを説明する、responseTopic :応答メッセージ文字stringのトピック名として使用される文字列、correlationData :相関データは、リクエストメッセージの送信者によって使用され、応答メッセージがbinaryを受信したときのリクエストメッセージを識別します。userProperties :ユーザープロパティは、複数の名前、値ペアobjectを表すために複数回表示することができますtransformWsUrl :optional (url, options, client) => url関数のみ。再接続すると有効期限が切れる可能性がある署名URLを実装するために使用できます。
createWebsocket :オプションのurl, websocketSubProtocols, options) => Websocket関数のみ。カスタムWebSocketサブプロトコルまたは実装を実装するために使用できます。
resubscribe :接続が壊れて再接続されている場合、サブスクライブされたトピックが再び自動的にサブスクライブされます(デフォルトはtrue )
messageIdProvider :Custom MessageIDプロバイダー。 new UniqueMessageIdProvider()が設定されると、非競合MessageIDが提供されます。
log :カスタムログ機能。デフォルトはデバッグパッケージを使用します。
manualConnect :コンストラクターがconnectを呼び出すのを防ぎます。この場合、 mqtt.connectが呼び出された後、 client.connect手動で呼び出す必要があります。
timerVariant :デフォルトはautoになります。これは、どのタイマーが環境に最も適しているかを判断しようとします。検出の問題がある場合は、 workerまたはnativeに設定できます。自分に合っていない場合は、セットとクリアプロパティでタイマーオブジェクトを渡すことができます。
timerVariant: {
set : ( func , timer ) => setInterval ( func , timer ) ,
clear : ( id ) => clearInterval ( id )
} forceNativeWebSocket :Native WebSocketの使用を強制するために、検出の問題がある場合(つまり、 ws does not work in the browser )、trueに設定します。作成された最初のクライアントにTRUEに設定されている場合、すべてのクライアントがネイティブWebSocketを使用することに注意することが重要です。そして逆に、falseに設定または設定されていない場合、すべてが検出結果を使用します。
unixSocket :UNIXソケットに接続する場合は、これをtrueに設定します
MQTT(TLSを超えるMQTT)が必要な場合、 optionsオブジェクトはtls.connect()に渡されます。自己署名証明書を使用している場合、 rejectUnauthorized: falseました。ただし、これは中間攻撃で潜在的な人間にさらされ、生産に推奨されていないため、注意してください。
MQTTSやWSS上のMQTTなど、単一のポートで複数のTLSプロトコルをサポートする人には、 ALPNProtocolsオプションを利用します。これにより、アプリケーションレイヤープロトコルネゴシエーション(ALPN)プロトコルを定義できます。セットアップに基づいて、 ALPNProtocols文字列アレイ、バッファー、またはuint8arrayとして設定できます。
MQTT 3.1のみをサポートするブローカーに接続している場合(3.1.1に準拠していない)、これらの追加オプションを渡す必要があります。
{
protocolId : 'MQIsdp' ,
protocolVersion : 3
}これは、rabbitmq 3.2.4、および蚊<1.3で確認されています。蚊のバージョン1.3と1.4は、それらなしでは正常に機能します。
'connect' function (connack) {}
成功(再)接続(つまり、connack rc = 0)で放出されました。
connack Connackパケットを受け取りました。 clean Connectionオプションがfalseで、ServerがclientId Connection Optionの以前のセッションがある場合、 connack.sessionPresentフラグがtrueです。その場合、保存されたセッションに頼って、クライアントにサブスクライブコマンドを送信しないことを好む場合があります。 'reconnect' function () {}
再接続が開始されると放出されます。
'close' function () {}
切断後に放出されます。
'disconnect' function (packet) {}
ブローカーから切断パケットを受け取った後に放出されます。 MQTT 5.0機能。
'offline' function () {}
クライアントがオフラインになったときに放出されます。
'error' function (error) {}
クライアントが接続できないとき(つまり、connack rc!= 0)、または解析エラーが発生したときに放出されます。
次のTLSエラーはerrorイベントとして放出されます。
ECONNREFUSEDECONNRESETEADDRINUSEENOTFOUND'end' function () {}
mqtt.Client#end()が呼び出されたときに放出されます。コールバックがmqtt.Client#end()に渡された場合、このイベントはコールバックが戻ってきたら放出されます。
'message' function (topic, message, packet) {}
クライアントがパブリッシュパケットを受信したときに放出されます
topicトピックmessageペイロードpacket受信パケット'packetsend' function (packet) {}
クライアントがパケットを送信したときに放出されます。これには、サブスクリプションと接続の管理にMQTTが使用する.published()パケットとパケットが含まれます
packet受信パケット'packetreceive' function (packet) {}
クライアントがパケットを受信したときに放出されます。これには、購読されたトピックからのパケットと、サブスクリプションと接続の管理にMQTTが使用するパケットが含まれます
packet受信パケットデフォルトでは、Constructorが呼び出されるとクライアントが接続します。これを防ぐために、 manualConnectオプションをtrueに設定し、 client.connect()を手動で呼び出すことができます。
トピックにメッセージを公開します
topic 、 Stringに公開するトピックですmessageは、公開、 Buffer 、またはStringへのメッセージですoptions 、以下を含む公開オプションです。qos QoSレベル、 Number 、デフォルト0Boolean 、デフォルトのfalse retainBoolean 、デフォルトのfalseとしてのdupマークproperties :MQTT 5.0プロパティobjectpayloadFormatIndicator :ペイロードはUTF-8エンコードされた文字データまたはbooleanはありません、messageExpiryInterval :秒numberでのアプリケーションメッセージの寿命、topicAlias :トピック名numberを使用する代わりにトピックを識別するために使用される値、responseTopic :応答メッセージ文字stringのトピック名として使用される文字列、correlationData :リクエストメッセージの送信者が使用して、応答メッセージがbinaryを受信したときのリクエストメッセージを識別するために、userProperties :ユーザープロパティは、複数の名前、値ペアobjectを表すために複数回表示することができます。subscriptionIdentifier :サブスクリプションnumberの識別子を表す、contentType :アプリケーションメッセージstringの内容を説明する文字列cbStorePut function () 、qosが1または2場合、メッセージが発信outgoingStoreに配置されたときに起動されます。callback function (err, packet) 、qos処理が完了したときに発射される、またはqos 0の場合は次のティックで発射されます。クライアントが切断されている場合はエラーが発生します。 async publish 。 Promise<Packet | undefined> 。
messageIdプロパティを備えたものです。トピックまたはトピックを購読します
topicは、購読する文字StringトピックまたはサブスクライブするArrayのトピックです。また、オブジェクトである場合があります。オブジェクトキーとしてトピック名を持ち、 {'test1': {qos: 0}, 'test2': {qos: 1}}のようにqosの値としてqosを獲得します。 MQTT topicワイルドカード文字はサポートされています( + - シングルレベルの場合、 # - マルチレベルの場合)options 、次のものを含むサブスクライブのオプションです。qos QoSサブスクリプションレベル、デフォルト0nlローカルMQTT 5.0フラグはありません(値がtrueの場合、アプリケーションメッセージを公開接続のclientIDに等しいClientIDと接続する必要はありません)rapは公開されたMQTT 5.0フラグとして保持されます(Trueの場合、このサブスクリプションを使用して転送されたアプリケーションメッセージは、公開された保持フラグを保持します。falseの場合、このサブスクリプションを使用して転送されたアプリケーションメッセージのFlagは0に設定されています)))rhはMQTT 5.0の処理を保持します(このオプションは、サブスクリプションが確立されたときに保持されたメッセージが送信されるかどうかを指定します。)properties : objectsubscriptionIdentifier :サブスクリプションnumberの識別子を表す、userProperties :ユーザープロパティは、複数の名前、値ペアobjectを表すために複数回表示することができますcallback function (err, granted)コールバックがsubackで発射された場所:errgranted {topic, qos}の配列があります。topicはトピックに登録されていますqosは、QoSレベルが付与されています async subscribe 。 Promise<ISubscriptionGrant[]> 。
トピックやトピックからの登録解除
topicはStringトピックまたは登録解除するトピックの配列ですoptions :登録解除のオプション。properties : objectuserProperties :ユーザープロパティは、複数の名前、値ペアobjectを表すために複数回表示することができますcallback function (err) 、Unsubackで発射されました。クライアントが切断されている場合、エラーが発生します。 async unsubscribe 。 Promise<void> 。
クライアントを閉じ、次のオプションを受け入れます。
force :それを真に渡すと、飛行中のメッセージがackされるのを待つことなく、クライアントをすぐに閉じます。このパラメーターはオプションです。options :切断のオプション。reasonCode :理由コードnumberを切断しますproperties : objectsessionExpiryInterval :セッションの有効期限間隔を秒numberで表す、reasonString :切断されたstringの理由を表す、userProperties :ユーザープロパティは、複数の名前、値ペアobjectを表すために複数回表示することができます。serverReference : string使用するために別のサーバーを識別するためにクライアントが使用できる文字列callback :クライアントが閉じられているときに呼び出されます。このパラメーターはオプションです。非同期のend 。 Promise<void> 。
発信ストアからメッセージを削除します。メッセージが削除された場合、発信コールバックはエラー(「メッセージ削除」)で呼び出されます。
この関数が呼び出された後、MessageIDがリリースされ、再利用可能になります。
mId :発信ストアのメッセージのメッセージ。connect()と同じオプションを使用してもう一度接続します
一度に1つずつ、逆圧力サポートを備えたメッセージを処理します。自由にオーバーライドしますが、常にcallbackを呼び出すと、クライアントがハングします。
Boolean:クライアントが接続されている場合はtrueに設定します。それ以外のfalse 。
番号:最後のメッセージIDを取得します。これは、送信されたメッセージのみ用です。
Boolean:クライアントがサーバーに再接続しようとしている場合、 trueに設定します。それ以外のfalse 。
メッセージストアのメモリ内実装。
optionsはストアオプションです。clean : trueとクリーンな機内メッセージが呼ばれるとき(デフォルトtrue ) mqtt.Storeのその他の実装:
パケットをストアに追加すると、パケットはmessageIdプロパティを備えたものです。パケットが保存されているときにコールバックが呼び出されます。
ストア内にすべてのパケットが付いたストリームを作成します。
ストアからパケットを削除すると、パケットはmessageIdプロパティを持つものです。パケットが削除されたときにコールバックが呼び出されます。
店を閉じます。
重要
ブラウザでサポートされている唯一のプロトコルは、WebSocketsを介してMQTTであるため、 ws://またはwss:// protocolsを使用する必要があります。
WSモジュールはnodejsで使用されますが、WebSocketはブラウザで使用されます。これは、以下を除いてユーザーに完全に透明です。
wsOptionブラウザではサポートされていません。
ブラウザは、セキュリティ上の理由で多くのWebSocketエラーをキャッチすることを許可していません。
この情報へのアクセスにより、悪意のあるWebページがネットワークに関する情報を取得できるようになるため、ブラウザはすべての接続時間エラーを区別できない方法で報告する必要があります。
したがって、 client.on('error')を聞くことは、nodejs envで得られるすべてのエラーをキャッチしない場合があります。
mqtt.jsは、esbuildを使用してバンドルされています。 Webpack、Vite、Reactなどのすべてのバンドラーと連携してテストされています。
すべてのMQTTバンドルバージョンをdistフォルダーに見つけることができます。
mqtt.js -iife形式で、縮小されていませんmqtt.min.js -iife形式、削除mqtt.esm.js -ESM形式の削除MQTT.JS> 5.2.0から始めると、次のようにMQTTをコードにインポートできます。
import mqtt from 'mqtt'これは、バンドラーによって自動的に処理されます。
それ以外の場合は、次のような特定のバンドルを使用することを選択できます。
import * as mqtt from 'mqtt/dist/mqtt'
import * as mqtt from 'mqtt/dist/mqtt.min'
import mqtt from 'mqtt/dist/mqtt.esm'MQTT.JSバンドルは、http://unpkg.com、特にhttps://unpkg.com/mqtt/dist/mqtt.min.jsから入手できます。バージョン範囲に関する完全なドキュメントについては、http://unpkg.comを参照してください。
Qosの仕組みは次のとおりです。
データ消費については、明らかに、QoS 2> QoS 1> QoS 0について、それがあなたにとって懸念事項である場合。
V5から始めて、このプロジェクトはTypeScriptで記述されており、タイプ定義はパッケージに含まれています。
例:
import { connect } from "mqtt"
const client = connect ( 'mqtt://test.mosquitto.org' ) WeChat Miniプログラムをサポートしています。 wxsプロトコルを使用します。 WeChatドキュメントを参照してください。
import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only' // import before mqtt.
import 'esbuild-plugin-polyfill-node/polyfills/navigator'
const mqtt = require ( "mqtt" ) ;
const client = mqtt . connect ( "wxs://test.mosquitto.org" , {
timerVariant : 'native' // more info ref issue: #1797
} ) ;Ali Miniプログラムをサポートします。 alisプロトコルを使用します。 Alipay Docsを参照してください。
const mqtt = require ( "mqtt" ) ;
const client = mqtt . connect ( "alis://test.mosquitto.org" ) ; MQTT.JSは、オープンオープンソースプロジェクトです。これは、それを意味します:
重要かつ貴重な貢献をしている個人には、プロジェクトへのコミットメントが与えられ、適切と思われます。このプロジェクトは、標準的なガードされたオープンソースプロジェクトというよりは、オープンウィキのようなものです。
詳細については、contributing.mdファイルを参照してください。
MQTT.JSは、次の貢献者の優れた作業によりのみ可能です。
| 名前 | github | ツイッター |
|---|---|---|
| アダム・ラッド | github/adamvr | Twitter/@adam_vr |
| マッテオ・コリーナ | Github/McOllina | Twitter/@Matteocollina |
| Maxime Agor | github/4rzael | Twitter/@4rzael |
| Siarhei Buntsevich | github/scarry1992 | |
| ダニエル・ランド | Github/Robertslando |
mqtt.jsをサポートしたい場合は、著者とアクティブメンテナーのスポンサーを検討してください。
mit