Windowsで実行されているMosquittoでWebSocketを有効にする方法は?


8

WindowsマシンでMosquittoブローカーを稼働させています。Webソケットのサポートを使用してインストールしたかどうかはわかりません(原因がわからなかったため、または必要だったため)。しかし、私の要件はJavaScript(Paho)を使用してMQTTに接続することです。既存のMQTTブローカーのWebソケットサポートを有効にする方法を知りたいです。

mosquitto.confこれらの行をファイルに追加してファイルを編集してみました

listener 9001
protocol websockets

しかし、動作していないようです。私はより良い写真を提供するかもしれない画像を添付しています:

Windowsコマンドプロンプトのエラーメッセージとmosquitto.conf

コマンドもよくわかりませんが、デフォルトのポート1883で動作するようです。

だから問題は:それをどのように機能させるのですか?

回答:


10

いくつかのこと:

  1. mosquittto_pubそしてmosquitto_subコマンドは、すべてのWebSocketをサポートしていません。

  2. コマンドラインからmosquittoを実行するときは、-cオプションで構成ファイルを明示的に指定する必要があります

    mosquitto -v -c /path/to/mosquitto.conf
    
  3. mosquitto.orgダウンロードページから入手できるWindowsビルドはWebSocketをサポートしていないため、ソースからmosquittoをビルドして有効にした場合にのみWebSocketをサポートできます(バージョン1.5.1以降、WindowsビルドにはWebSocketサポート)


それは、javascriptがpubsubクライアントと通信できないことを意味しますか?また、特定のトピックについてJavaScriptによってブローカー(発行)に送信されたメッセージは、そのトピックをリッスンしているmosquitto_subで受信されませんか?
Salim Shamim 2017年

WebSocketがサポートされていない場合、Paho JavaScriptクライアントはブローカーにまったく接続できないため、トピックをパブリッシュまたはサブスクライブできません
hardillb

OK、このリンクを引用するには(eclipse.org/paho/clients/js)「Paho JavaScriptクライアントは、WebSocketを使用してMQTTブローカーに接続するJavaScriptで記述されたMQTTブラウザーベースのクライアントライブラリです。」そして、この blog.ithasu.org/2016/05/…は、LinuxでMosquittoのWebSocketを有効にする方法を説明しています。なぜそれができないのか理解できません。迷ってしまってごめんなさい。
Salim Shamim 2017年

1
これはすでに回答済みです。Windows用のビルドにはWebSocketが
組み込まれてい

それは聞き取りにくいです。私はさまざまなリファレンスを使用してMosquittoのバージョンをビルドしようとしていますが、いつもどこかで行き詰まっています。また、websocket対応のmosquitto(windows-hosted)バイナリを使用しているを見つけることできませんでした。
Eric Wu

5

@hardlibが言ったように、ソースからmosquittoをコンパイルする必要があります。Windowsで機能させるには試行錯誤が必要だったので、誰かに役立つ場合の要約をここに示します。それを修正することを躊躇しないでください:

  • 前提条件

    • Visual Studioをインストールする
    • cmakeをインストールします(最新バージョンで問題ありません)
    • OpenSSLをC:\ temp \ OpenSSLにインストールします。
    • pthreadをC:\ pthreadsに解凍します
  • libwebsocketsをビルドします。

    • git clone https://github.com/warmcat/libwebsockets.git プロジェクトのディレクトリに入ります
    • 安定したコミットであることを確認してください(2.3は6cf0a981667f0d225a9cf2d7aecfd6f50be6c1fb
    • mkdir build && cd build
    • cmake -G "Visual Studio 15" ..
    • Visual Studioで.slnを開き、ビルドタイプをリリースに設定して、Ctrl + Shift + Bを押します。
  • 蚊を作る

    • git clone https://github.com/eclipse/mosquitto.git
    • cd mosquitto
    • mkdir build && cd build
    • cmake -G "Visual Studio 15" ..
    • cmake-gui
    • websocketsオプションがチェックされていることを確認し、生成をクリックします
    • オープンプロジェクト(ここでハック部分が来ます)
    • libwebsockets \ libおよびlibwebsockets \ buildディレクトリを追加のインクルードディレクトリとしてmosquittoプロジェクトのリリースビルドに追加し、libwebsockets \ build \ lib \ Releaseをリンカーの追加のライブラリディレクトリに追加します。
    • #define snprintf sprintf_sconfig.hからコメント化
    • timespecpthreads.hから構造体をコメント化します。
    • mosquitto_passwdプロジェクトの追加ライブラリから、optimized.libとdebug.libを削除します
    • #include <Windows.h>mosquitto_passwd.cのwin32 ifdefに追加
    • リリースモードを選択し、Ctrl + Shift + Bを押します

3

1.5.1 Windowsのパッケージのサポート用WebSocketから始めて、変更履歴を参照https://mosquitto.org/blog/ 「プロトコルのWebSocket」を追加することでのWebSocketプロトコルを使用するように指定し、あなただけの編集mosquitto.confファイルに持っている(行の周りの定義を参照してください145)サービスとして実行する場合は、最終的にmosquittoを再起動します


追加listener 9001protocol websocketsWebsocktをサポートし、使用listener 1883してprotocol mqtt、あなたのことができ、デフォルトのMQTTトラフィックmosquitto.configに
トーマス

2

自分でコードをビルドしたくない場合に役立つ可能性がある、GitHub上の Windows用構築されたWebSocketを備えたMosquittoのコンパイル済みバージョンを見つけました。

これは韓国語で文書化されていますが、事前にコンパイルされたバイナリを使用したくない場合は、自分でビルドする方法を説明したPowerPointプレゼンテーションも含まれています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.