Skip to content

JavaScript SDK を使った接続

MQTT.js は、JavaScript で実装された MQTT プロトコルクライアント機能のモジュールであり、ブラウザおよび Node.js 環境で利用できます。

JavaScript のシングルスレッド特性により、MQTT.js は完全に非同期の MQTT クライアントです。MQTT.js は MQTT と MQTT over WebSocket をサポートしており、各環境での対応状況は以下の通りです。

  • ブラウザ環境:MQTT over WebSocket(WeChat アプレット、Alipay アプレットなどのカスタマイズされたブラウザ環境を含む)
  • Node.js 環境:MQTT、MQTT over WebSocket

接続パラメータの一部は環境によって異なりますが、その他の API は共通です。

npm を使ったインストール方法:

bash
npm i mqtt

CDN を使ったブラウザでのインストール方法:

html
<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script>
    // グローバルに mqtt 変数を初期化
    console.log(mqtt)
</script>

Node.js がインストールされている環境では、npm i mqtt -g コマンドで MQTT.js をグローバルに利用できます。

bash
npm i mqtt -g

mqtt help

> MQTT.js コマンドラインインターフェース、利用可能なコマンドは以下の通りです:

  * publish     ブローカーへメッセージをパブリッシュする
  * subscribe   ブローカーからの更新をサブスクライブする
  * version     現在の MQTT.js バージョンを表示
  * help        コマンドのヘルプを表示

> 詳細は 'mqtt help [command]' を実行してください。

MQTT.js 使用例

以下は、JavaScript で MQTT.js を使って EMQX に接続し、メッセージの送受信を行う完全なコード例です。

javascript
// const mqtt = require('mqtt')
import mqtt from 'mqtt'

// 接続オプション
const options = {
  		clean: true, // セッションを保持しない
      connectTimeout: 4000, // タイムアウト時間(ミリ秒)
      // 認証情報
      clientId: 'emqx_test',
      username: 'emqx_test',
      password: 'emqx_test',
}

// 接続文字列、プロトコルで接続方法を指定
// ws 暗号化されていない WebSocket 接続
// wss 暗号化された WebSocket 接続
// mqtt 暗号化されていない TCP 接続
// mqtts 暗号化された TCP 接続
// wxs WeChat アプレット接続
// alis Alipay アプレット接続
const connectUrl = 'wss://broker.emqx.io:8084/mqtt'
const client = mqtt.connect(connectUrl, options)

client.on('reconnect', (error) => {
    console.log('再接続中:', error)
})

client.on('error', (error) => {
    console.log('接続失敗:', error)
})

client.on('message', (topic, message) => {
  console.log('メッセージ受信:', topic, message.toString())
})

MQTT.js の MQTT 5.0 サポート

現在、MQTT.js は MQTT 5.0 を完全にサポートしています。