始める前に、次のことを確かめて下さい:
npm インストール mqtt --save
このセクションには、MQTT ブローカーに接続するさまざまな方法のコードスニペットがあります。 確認する MQTTブローカーは、接続をサポートしています 使用したいタイプ また、 MQTTブローカー(アドレス、ポート、)の対応する接続パラメータを取得する ユーザー名/パスワード、CA証明書
MQTTの特長 TCP で
クライアントを TCP に接続するために、次のコードを使用します。 MQTT Brokerの接続パラメータを使用してマクロADDRESSを定義します。
MQTT 3.1.1のため:
コントブローカー ウル =
'mqtt://public-mqtt-broker.bevywise.com;
const conn_params = {クライアント Id : "crystalmq_" +
Math.random().toString(36).substring(2、12)};
const クライアント = mqtt.connect(brokerUrl、conn_params);
MQTT 5のため:
const mqtt = 必須('mqtt');
コントブローカー Url = 'mqtt://public-mqtt-broker.bevywise.com';
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2,
12),
プロトコル バージョン: 5 // MQTT を指定する 5 プロトコルバージョン
お問い合わせ
const クライアント = mqtt.connect(brokerUrl、conn_params);
TLS/SSL上のMQTT
以下のコードを使用して、TLS 上で MQTT ブローカーに安全に接続します。 MQTT Brokerの接続パラメータを使用してマクロADDRESSを定義します。
// // // // MQTTブローカーアドレスを定義する
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// TLS オプション
const tls_options={{{{{{{{{{{{{{{{{{{{{{}}}}}}={{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
拒否 無許可:true, // 自己署名を使用する場合に false に設定
証明書
ca: [fs.readFileSync('/path/to/ca.crt')], // CA 証明書
cert: fs.readFileSync('/path/to/client.crt'), // クライアント証明書
key: fs.readFileSync('/path/to/client.key'), // クライアントプライベートキー
お問い合わせ
// MQTT 接続オプション
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2,
12),
プロトコルバージョン:4, // MQTT 3.1.1 プロトコルバージョン
プロトコル Id: 'MQTT',
きれい:本当、
reconnectPeriod:1000の
connectTimeout: 30 * 1000の
ユーザー名: 'your-username',
パスワード:'your-password',
お問い合わせ
トピック: 'will-topic',
ペイロード: 'Connection 異常終了...',
qos: 1、
保存: false,
お問い合わせ
保護: 60、
再購読: true、
拒否 無許可:true, // 必要に応じて false に設定します。
自己署名された証明書
ca: [fs.readFileSync('/path/to/ca.crt')], // CA 証明書
cert: fs.readFileSync('/path/to/client.crt'), // クライアント証明書
key: fs.readFileSync('/path/to/client.key'), // クライアントプライベートキー
お問い合わせ
// MQTTブローカーに接続する
const クライアント = mqtt.connect(ADDRESS、conn_params);
MQTTClient_connect を呼び出す前に TLS パラメータを設定し、クライアントを接続します。 mQTT ブローカーは TLS を安全に管理します。
MQTT ブローカーが信頼できるサーバーでホストされている場合、サーバーの検証は TLSオプションを設定するには、次のコードを使用できます。
// // // // MQTTブローカーアドレスを定義する
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// TLS オプション
const tls_options={{{{{{{{{{{{{{{{{{{{{{}}}}}}={{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
拒否 未承認: false, // サーバをスキップする false に設定
認証
お問い合わせ
// MQTT 接続オプション
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2,
12),
プロトコルバージョン:4, // MQTT 3.1.1 プロトコルバージョン
プロトコル Id: 'MQTT',
きれい:本当、
reconnectPeriod:1000の
connectTimeout: 30 * 1000の
ユーザー名: 'your-username',
パスワード:'your-password',
お問い合わせ
トピック: 'will-topic',
ペイロード: 'Connection 異常終了...',
qos: 1、
保存: false,
お問い合わせ
保護: 60、
再購読: true、
拒否 未承認: false, // サーバをスキップする false に設定
認証
お問い合わせ
// MQTTブローカーに接続する
const クライアント = mqtt.connect(ADDRESS、{ ...conn_params、...tls_options)
お問い合わせ
MQTT ブローカーに Trusted CA から発行された Server 証明書がある場合、サーバー 証明書は、次の方法で検証できます。
// // // // MQTTブローカーアドレスを定義する
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// TLS オプション
const tls_options={{{{{{{{{{{{{{{{{{{{{{}}}}}}={{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
ca: [fs.readFileSync('/path/to/ca.crt')], // 信頼できるCA証明書
お問い合わせ
// MQTT 接続オプション
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2,
12),
プロトコルバージョン:4, // MQTT 3.1.1 プロトコルバージョン
プロトコル Id: 'MQTT',
きれい:本当、
reconnectPeriod:1000の
connectTimeout: 30 * 1000の
ユーザー名: 'your-username',
パスワード:'your-password',
お問い合わせ
トピック: 'will-topic',
ペイロード: 'Connection 異常終了...',
qos: 1、
保存: false,
お問い合わせ
保護: 60、
再購読: true、
拒否 無許可:true, // サーバを検証する
証明書
ca: [fs.readFileSync('/path/to/ca.crt')], // 信頼できるCA証明書
お問い合わせ
// MQTTブローカーに接続する
const クライアント = mqtt.connect(ADDRESS、{ ...conn_params、...tls_options)
お問い合わせ
MQTTブローカーに自己署名されたサーバー証明書がある場合、サーバー証明書 MQTTブローカーから入手したルート証明書を使用して検証できます。
// // // // MQTTブローカーアドレスを定義する
const ADDRESS = 'mqtt://public-mqtt-broker.bevywise.com';
// ルートCA証明書(MQTTブローカーから自己署名証明書)
const rootCA = fs.readFileSync('/path/to/root-ca.crt');
// TLS オプション
const tls_options={{{{{{{{{{{{{{{{{{{{{{}}}}}}={{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{}}}}={{{{{{{{{{{{{{{{{}}}}}}}={{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
ca: [rootCA], // MQTT ブローカーが提供するルート CA 証明書
お問い合わせ
// MQTT 接続オプション
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2,
12),
プロトコルバージョン:4, // MQTT 3.1.1 プロトコルバージョン
プロトコル Id: 'MQTT',
きれい:本当、
reconnectPeriod:1000の
connectTimeout: 30 * 1000の
ユーザー名: 'your-username',
パスワード:'your-password',
お問い合わせ
トピック: 'will-topic',
ペイロード: 'Connection 異常終了...',
qos: 1、
保存: false,
お問い合わせ
保護: 60、
再購読: true、
拒否 無許可:true, // サーバを検証する
証明書
ca: [rootCA], // MQTT ブローカーが提供するルート CA 証明書
お問い合わせ
// MQTTブローカーに接続する
const クライアント = mqtt.connect(ADDRESS、{ ...conn_params、...tls_options)
お問い合わせ
WebSocket 経由で MQTT
クライアントをWebSocketに接続するために、このようなMQTTブローカーアドレスを定義します。
コントブローカー Url = 'ws://public-mqtt-broker.bevywise.com:10443/mqtt';
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
ユーザー名 : "some username"
パスワード : 「一部パスワード」
お問い合わせ
const クライアント = mqtt.connect(brokerUrl、conn_params);
セキュアなWebSocket上MQTT
Secure WebSocket 上でクライアントを接続するには、以下のコードを使用します。 TLS オプションを TLS セクションに MQTT で指定するように設定します。 MQTT Brokerの接続パラメータを使用してマクロADDRESSを定義します。
コントブローカー Url = 'wss://public-mqtt-broker.bevywise.com:11443/mqtt';
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2,
12),
お問い合わせ
const クライアント = mqtt.connect(brokerUrl、conn_params);
MQTT ユーザー名と MQTT パスワードが必要な MQTT ブローカーに接続するには 認証は、ユーザ名とパスワードで接続オプションに追加します。
コントブローカー Url = 'mqtt://public-mqtt-broker.bevywise.com;
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
ユーザー名 : "some username"
パスワード : 「一部パスワード」
お問い合わせ
const クライアント = mqtt.connect(brokerUrl、conn_params);
最終ウィル&テストの設定
設定する最終ウィルとテストというメッセージを指定する機能 ブローカーは、クライアントが公開するかどうかを公開します 予期しない切断。 これは、接続されていないクライアントのステータスの他の加入者に通知するのに役立ちます。
接続オプションでLast Willを設定するには、次のコードを使用します。
コントブローカー Url = 'mqtt://public-mqtt-broker.bevywise.com;
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
お問い合わせ
トピック: 'lastwill',
ペイロード:「Goodbye, CrystalMQ!」 お問い合わせ
お問い合わせ
お問い合わせ
const クライアント = mqtt.connect(brokerUrl、conn_params);
調節は生きている保ちます
MQTT はクライアント・ブローカー・コネクションを維持します。常に生き続けるメカニズム。 クライアントがPINGREQを送信する頻度を制御するために、一貫した間隔を調整 ブローカーへのメッセージ。
あなたの要件に合ったコードを変更します。
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
防腐剤: 60、
お問い合わせ
お問い合わせ
セッションの持続性の設定
MQTTクライアントのセッションデータには、クライアントと任意のデータによって行われたサブスクリプションが含まれます クライアントは QoS>0 で受け取る。 クライアントは、MQTT ブローカーがセッションデータを接続間で保存することができます。
MQTT 3.1.1 クライアントは、MQTT ブローカーを要求するために、クリーン セッション = 0 を設定することができます 接続間で保存されたセッション情報。
MQTT 3.1.1のため:
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
きれい:本当、
お問い合わせ
お問い合わせ
MQTTの特長 5 クライアントは、Clean Start = 0 と session Expiry Interval = 'N' をリクエストするように設定できます。 MQTTの特長 ブローカーは、セッション情報を「N」秒間接続間で保存しておくことができます。
MQTT 5のため:
// MQTT 5 の MQTT 接続オプション
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2、12)、
きれい:本当、
プロトコル バージョン: 5 // MQTT を指定する 5 プロトコルバージョン
お問い合わせ
設定最大 パケット サイズ
MQTT5 クライアントは、MQTT ブローカーをリクエストして、特定のデータパケットを特定のものよりも少なく送信することができます。 このように設定することでサイズ:
MQTT 5のため:
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
プロトコルバージョン: 5、
プロパティ: お問い合わせ
maxPacketSize: 1024, // 最大パケットサイズ
お問い合わせ
お問い合わせ
データの送信
複数の加入者にデータを効率的に配信し、指定する 次のコードスニペットのトピック:
MQTT 3.1.1のため:
client.publish('testtopic'、'Hello、CrystalMQ!'、(err) => お問い合わせ
もし(err) {
console.error('メッセージを公開できなかった:', err);
お問い合わせ
console.log('メッセージ公開');
お問い合わせ
お問い合わせ
MQTT 5のため:
client.publish('testtopic'、'Hello、CrystalMQ!')、{
qos: 1、 // サービスレベルの品質(0、1、または2)
left: false, // フラグの保持
プロパティ: { // MQTT 5 プロパティ
payloadFormatIndicator:1、
messageExpiryInterval: 60, // 秒でメッセージの有効期限間隔
トピック: 1,
responseTopic: 'responseTopic',
correlationData: Buffer.from('correlationData'),
ユーザー プロパティ: お問い合わせ
'key': 'value',
お問い合わせ
お問い合わせ
お問い合わせ お問い合わせ
もし(err) {
console.error('メッセージを公開できなかった:', err);
お問い合わせ
console.log('メッセージ公開');
お問い合わせ
お問い合わせ
保持メッセージの設定
ブローカーが保管することを確認するためにメッセージを公開するときに保持フラグを有効にします フォロー 各トピックのメッセージ。 新規加入者が最新の受信を保証 接続時のメッセージ
これを実行するには、次のコードスニペットを使用します。
クライアント.publish('testtopic'、'Hello、CrystalMQ!')、 { 保持: true、
(err) =>
お問い合わせ
もし(err) {
console.error('メッセージを公開できなかった:', err);
お問い合わせ
console.log('trueにセットされたキーを保持したメッセージ');
お問い合わせ
お問い合わせ
QoSレベルを指定する
MQTTは、メッセージ配信のための3つの品質(QoS)を提供します。
クライアント.publish('testtopic', 'Hello, Crysql MQ!', { qos: 1 }); // 0 または 1 または2
公開プロパティは MQTT に関連する属性または設定です 追加のコンテキストやメッセージを処理するための指示を提供するメッセージ ブローカーまたは他のクライアント。 これらのプロパティには、メッセージの有効期限間隔、QoSレベル、 コンテンツの種類、応答トピックなど メッセージをより正確に制御できるので、 MQTT の効率的で信頼性の高いメッセージ配信を保証する公開および処理 コミュニケーション。
メッセージの有効期限インターバル
「メッセージの有効期限間隔」プロパティは、メッセージの寿命を秒単位に設定します。 現時点では、ブローカーはそれを破棄します。 MQTT5は、この機能をサポートしています。 MQTT5 クライアントは、データを公開する際にこれを設定できます。
MQTT 5のため:
const トピック = "testtopic";
コントペイロード = "こんにちは、CrystalMQ!"
コントペイロード_prop = {
qos: 1、
プロパティ: お問い合わせ
messageExpiryInterval: 60, // 秒でメッセージの有効期限間隔
お問い合わせ
お問い合わせ
client.publish(トピック、ペイロード、ペイロード_prop、(err) => お問い合わせ
もし(err) {
console.error('メッセージを公開できなかった:', err);
お問い合わせ
console.log('trueにセットされたキーを保持したメッセージ');
お問い合わせ
お問い合わせ
トピック 別名で
'Topic Alias' プロパティは、クライアントが完全なトピックの代わりに短いエイリアスを使用することを可能にします 名前、メッセージパケットのサイズを減らし、ネットワークの効率を改善して下さい。
MQTT 5のため:
const トピック = "testtopic";
コントペイロード = "こんにちは、CrystalMQ!"
コントペイロード_prop = {
qos: 1、
プロパティ: お問い合わせ
トピックAlias: 1、 // このメッセージに使用するトピックの別名を設定します
お問い合わせ
お問い合わせ
client.publish(トピック、ペイロード、ペイロード_prop、(err) => お問い合わせ
もし(err) {
console.error('メッセージを公開できなかった:', err);
お問い合わせ
console.log('trueにセットされたキーを保持したメッセージ');
お問い合わせ
お問い合わせ
MQTT PUBLISHに関連付けられている特性はメッセージの処理を高めます、コンテキストを提供しますまたは ブローカーやクライアントの指示。 これらのプロパティ, メッセージを含む expiry 間隔とトピックのエイリアス、メッセージ配信とネットワークの帯域幅を最適化します。
トピックフィルタへのサブスクライブ
他のクライアントが公開したデータを受信するには、このクライアントは、 マッチング トピック このようなフィルタ:
client.subscribe('testtopic',(err) => お問い合わせ
もし(err) {
console.error('サブスクリプションエラー:'、err);
お問い合わせ
console.log(`サブスクリプション済み`);
お問い合わせ
お問い合わせ
このトピックフィルタは、正確なトピックと一致したり、 # のようなワイルドカードを持つことができます。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
データの受信
サブスクリプションに送信されたデータを受信するには、コールバック関数を定義する必要があります お問い合わせ これ:
client.on('connect'、関数()) お問い合わせ
console.log('MQTTブローカーに接続');
// トピックを購読する
client.subscribe('testtopic'、{qos: 1 }、関数(err) {
もし(err) {
console.error('トピックを購読できません:'、err);
お問い合わせ
console.log('トピックにサブスクライブ');
お問い合わせ
お問い合わせ
お問い合わせ
トピックからの購読解除
トピックから更新を受信を停止するには、提供されたコードを使用して退会します。
client.unsubscribe('testtopic', (err) => ) は、
もし(err) {
console.log('unsubscribe エラー:', err)
フィードバック
お問い合わせ
console.log(`unsubscribed.`)
お問い合わせ
問題を避けるためにブローカーとクライアントの接続の適切な終了を確保 そして、 両側のリソース漏れ、システム安定性を維持します。
以下のコードを使用して、ブローカーからクライアントを切断します。
クライアント。end();
あなたは、あなた自身の複雑なビジネスロジックを開発し、カスタマイズする機会を持っています 内径 この環境は、特定のニーズや目的に合わせて正確に調整します。
個々の顧客の同一証明
特定のクライアント ID を各デバイスに正確に識別する目的で割り当てます。 のために プライベート展開、各クライアントが受け取ることを確認します。 共有環境では、異なるIDをクライアントに組み込む 独自性を確保するためのID。
構造データ組織
データ構造をうまく計画する。 プレーンテキストを扱うかどうか、 JSON のデータフォーマット、または数値データ、設計があなたのに合うように合わせられることを保障します アプリケーション固有のニーズ。
強力なエラー処理
MQTT接続障害、サブスクリプションを処理する強力なエラー管理を実行 問題とメッセージの公開エラーが効果的に.
機密保持
ユーザー名、パスワード、クライアント ID などの機密情報を保護する ソースコードをハードコーディングします。 環境変数を使うか、または安全 コンテンツ 代わりにファイル。
定期的なテストと監視
MQTT通信を継続的にテストし、接続などのクライアントメトリックを監視 ステータス、メッセージのスループット、エラー率を迅速に特定し、問題を解決します。
セッションマネジメントの最適化
クリーンで永続的なセッション(`clean: true` または `clean: false`) から選択 お問い合わせ クライアント接続間でサブスクリプションとキューイングされたメッセージを保持する必要があります。
接続解除の解除
予期しない時にMQTTブローカーに再接続しようとするコードを追加 切断。 これは、クライアントが接続され、失わないことを確実にします すべて データ。
Node JS MQTT Client Library を使用するクライアントのコードをダウンロードし、接続する お問い合わせ 私たちのメッセージングブローカーまたはあなたの選択のブローカー。
MQTT 3.1.1のため:
const mqtt = 必須('mqtt');
// constt fs = require('fs'); // メソッドの
コントブローカー Url = 'mqtt://public-mqtt-broker.bevywise.com';
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
クライアント Id : "crystalmq_" + Math.random().toString(36).substring(2、12)、
// keepalive : 60, // 秒単位で生き続ける
// ホスト : "public-mqtt-broker.bevywise.com" // ホスト
// プロトコル: 'mqtts', // プロトコル
// クリーン: true, // // // // クリーンセッション
// ユーザー名 : "some username", // mqtt ユーザ名
// パスワード : "some password", // mqtt パスワード
// は {
// トピック: 'lastwill', // トピック
// ペイロード: 'Goodbye, CrystalMQ!' // メッセージ
お問い合わせ
// ca: [fs.readFileSync('/path/to/root.crt')],
お問い合わせ
const 公開インターバル = 2000;
const クライアント = mqtt.connect(brokerUrl、conn_params);
const トピック = 'testtopic'; // トピックを公開
const message = "Hello CrystalMQ !" // 公開メッセージ
client.on('connect', () => クライアント
console.log('MQTTブローカーに接続');
setInterval(() => お問い合わせ
client.publish(トピック、メッセージ、(err) => お問い合わせ
もし(err) {
console.error('Errorパブリッシングメッセージ:', err);
お問い合わせ
console.log('Messageが公開:'、メッセージ);
お問い合わせ
お問い合わせ
お問い合わせ
お問い合わせ
client.on('message', (トピック、メッセージ) => お問い合わせ
console.log(`Received message: ${message.toString()} トピック:
${topic}`。
お問い合わせ
client.on('error', (err) => の お問い合わせ
console.error('Error:', err); のエラー
お問い合わせ
client.on('close', () => クライアント お問い合わせ
console.log('MQTTブローカーから切断');
お問い合わせ
client.on('reconnect', () => お問い合わせ
console.log('MQTTブローカーへの再接続...');
お問い合わせ
client.on('offline', () => { クライアント
console.error('MQTT") のエラー クライアントはオフラインです。
お問い合わせ
MQTT 5のため
const mqtt = 必須('mqtt');
コントブローカー Url = 'mqtt://public-mqtt-broker.bevywise.com';
const conn_params={{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
clientId: "crystalmq_" + Math.random().toString(36).substring(2、12)、
ProtocolVersion: 5, // MQTT を指定する 5 プロトコルバージョン
きれい:本当、 // // // // クリーンセッション
// 必要な場合は、これらのオプションを補完し、設定する
// 応答性: 60, // 秒単位で生き続ける
// ユーザー名: "some username", // MQTT ユーザー名
// パスワード: "some password", // MQTT パスワード
// は {
// トピック: 'lastwill', // トピック
// ペイロード: 'Goodbye, CrystalMQ!', // // // // メッセージ
お問い合わせ
// ca: [fs.readFileSync('/path/to/root.crt')],
お問い合わせ
const 公開インターバル = 2000;
const クライアント = mqtt.connect(brokerUrl、conn_params);
const トピック = 'testtopic'; // トピックを公開
投稿メッセージ = "Hello CrystalMQ!"; // // // // 公開メッセージ
client.on('connect', () => クライアント
console.log('MQTTブローカーに接続');
setInterval(() => お問い合わせ
クライアント.publish(topic, message, { qos: 1 }, (err) => お問い合わせ
もし(err) {
console.error('Errorパブリッシングメッセージ:', err);
お問い合わせ
console.log('Messageが公開:'、メッセージ);
お問い合わせ
お問い合わせ
お問い合わせ
お問い合わせ
client.on('message', (トピック、メッセージ、パケット) => お問い合わせ
console.log(`Received message: ${message.toString()} トピック:
${topic}`。
// 必要に応じてMQTT 5プロパティを処理する
console.log('プロパティ:'、package.properties);
お問い合わせ
client.on('error', (err) => の お問い合わせ
console.error('Error:', err); のエラー
お問い合わせ
client.on('close', () => クライアント お問い合わせ
console.log('MQTTブローカーから切断');
お問い合わせ
client.on('reconnect', () => お問い合わせ
console.log('MQTTブローカーへの再接続...');
お問い合わせ
client.on('offline', () => { クライアント
console.error('MQTT") のエラー クライアントはオフラインです。
お問い合わせ
`pkg を使用して実行ファイルを作成する手順
1。 「pkg」をグローバルにインストール
端末またはコマンドプロンプトを開き、次のコマンドを実行して `pkg` をインストールします。
npmインストール -g pkg
2. Node.js アプリケーションを準備する
`package.json` には、メインスクリプトにポイントする `bin` プロパティが含まれていることを確認してください。 のために 例えば、メインスクリプトが `index.js` の場合、 `package. json` は何か お問い合わせ これ:
お問い合わせ
"name": "your-app-name", "
"version": "1.0.0",
"main": "index.js",
"bin": "index.js",
"スクリプト": お問い合わせ
"start": "node index.js"
お問い合わせ
「依存関係」: お問い合わせ
"mqtt": "^4.2.8"
お問い合わせ
お問い合わせ
3。 実行テーブルを作成する
`pkg` を使用して、異なるオペレーティングシステムの実行ファイルを作成する。 以下を実行します。 コマンド ターミナル:
pkgの。 --targets ノード16-linux-x64、node16-win-x64
このコマンドは、Linux と Windows の両方で Node.js バージョン 16 としてターゲットを指定します。 64ビット アーキテクチャ。 必要に応じてバージョンとアーキテクチャを調整します。
4。 実行テーブルを配布する
`pkg` コマンドを実行すると、現在のディレクトリの実行ファイルが見つかります。 お問い合わせ これらの実行ファイルをユーザーに配布することができます。 それらはあなたのに基づいて名前付けられます アプリケーション `your-app-name-linux` や、 `your-app-name-win.exe` です。
クライアントを最先端のアートに接続MQTTブローカーまたはあなたの選択のブローカー。 この強力な組み合わせは、最適なパフォーマンスを保証します そして、 すべてのあなたのメッセージングのニーズのための信頼性、堅牢で効率的な方法舗装 システム 統合。