MQTT over WebSocketの利用

本章では、CAP(EDM)のICE Message Router 互換機能でMQTT over WebSocketを有効化するための設定について記載します。

WebSocketの利用設定

1. WebSocketURL設定を追加

次の設定ファイルの mqtt.webSocketUrlws://0.0.0.0:<ポート番号> を設定します。 なお、mqtt.url は必須項目となります。 mqtt.webSocketUrl を指定する場合も未指定とすることはできません。

  • /opt/nec/pf/ice/msgroutre_core/conf/core_config.json

(設定例)

{
    "mqtt": {
        "url": "mqtt+nio://0.0.0.0:1883",
        "webSocketUrl": "ws://0.0.0.0:61614?websocket.maxBinaryMessageSize=104857600&allowLinkStealing=true"
    },
    "mongodb": {
        "url":"mongodb://<ユーザ名>:<パスワード>@<MongoDBホスト名>:<ポート番号>/rawdata?authSource=admin"
    }
}

2. サービスの再起動

設定変更後次のコマンドでサービスを再起動してください。

systemctl restart ice-message-router

Secure WebSocketの利用設定

1. SSL/TLS通信の設定追加

SSL/TLS通信設定を実施してください。

2. WebSocketURL設定を追加

次の設定ファイルの mqtt.webSocketUrlwss://0.0.0.0:<ポート番号> を設定します。 なお、mqtt.url は必須項目となります。 mqtt.webSocketUrl を指定する場合も未指定とすることはできません。

  • /opt/nec/pf/ice/msgroutre_core/conf/core_config.json

(設定例)

{
    "mqtt": {
        "url": "mqtt+nio://0.0.0.0:1883",
        "webSocketUrl": "wss://0.0.0.0:61614?websocket.maxBinaryMessageSize=104857600&allowLinkStealing=true"
    },
    "mongodb": {
        "url":"mongodb://<ユーザ名>:<パスワード>@<MongoDBホスト名>:<ポート番号>/rawdata?authSource=admin"
    }
}

3. サービスの再起動

設定変更後次のコマンドでサービスを再起動してください。

systemctl restart ice-message-router

WebSocket/Secure WebSocket利用時のオプション

  • allowLinkStealing
    既定値はfalseです。trueの場合、すでに接続されているクライアントIDと同じクライアントIDで接続要求があった際に、古い接続を切断して新しい接続を確立します。MQTT仕様通りの動作をさせるために、必ずtrueを設定してください。
    (例) 接続しているエッジ機器がNW切断等で接続状況が途切れNW復旧時に再接続した際、本指定が行われているとNW切断前のコネクションを破棄し、再接続されたコネクションを有効とします。本指定がない場合、再接続されたコネクションを破棄する場合がありエッジ機器の再接続に失敗します。

  • websocket.maxBinaryMessageSize
    WebSocket/Secure WebSocketの最大メッセージサイズを変更する場合は本オプションで必要な値を指定してください。EDM連携時の推奨値は104857600です。