フロント:
WeChatアプレットインターフェースなど。機能がそれほど複雑でない場合、実際に開発するのは非常に簡単ですが、より多くの落とし穴が彼のセキュリティメカニズムです。まず、独自のドメイン名が必要です。ドメイン名を登録する必要があります。通常、登録には約20日かかり、独自のサーバーでhttpsをサポートする必要があります。そのため、Tencent Cloudにドメイン名の購入、サーバーの購入、ファイルの提出などを20日以上依頼しましたが、多額の費用がかかりました。これは最初のピットにすぎません。
アプレットMQTTクライアント:
アプレットMQTTクライアントはpaho-mqtt.jsの使用をサポートしています。ソースコードはgithubにあります。使用方法については、ソースコードに含まれている例を確認できます。通常、それほど複雑ではありません。しかし、それを正しく行うと、インターフェースは次のようになります。
MQTTを使用したことがあるユーザーは、ポートとサーバーアドレスを選択でき、ユーザー名とパスワードの認証はオプションです。だから私はそれを記入した後。接続エラーは次のとおりです。
プロンプトによると、私のドメイン名は正当なドメイン名のリストに含まれていませんが、設定されていて、アプレットプロジェクトが更新されていることは確かです。それでも、このエラーが表示されます。
解決策:
小さなプログラムはwssを使用して通信するため、デフォルトはポート443です。自分でポートを指定する必要はありません。下の図の一番下の方法を使用してアクセスできます。
EMQを使用したことがある人は、tcpポートが1883、sslポートが8883、wsポートが8083、およびwssポートが8084であることを知っているはずですが、これらのポートは現在アクセスに使用できません。以下に示すように:
EMQサーバーのセットアップ:
EMQサービスの構築は実際には複雑ではありません。インストールの公式ドキュメントを参照できます。私はLinuxの一般的なバージョンを使用しています。ここでは、SSL証明書の設定に注意を払う必要があります。私の質問の 1つに言及しています。興味がある場合は、ご覧になることができます。
上記の問題を解決するために、ここではリバースプロキシにNginxを使用しています。Nginxのインストールはそれほど複雑ではありませんが、ソースコードインストールを使用する場合は、インストール前に依存ライブラリをインストールする必要があります。ubuntu16.04nginx installationを参照してください。さらに、more_clear_headersモジュールを追加する必要があります。次を参照できます:openresty / headers-more-nginx-module
次に、主にSSLとリバースプロキシを構成し、次の構成を実行するNginxの構成を示します。
server {
listen 443;
server_name www.domain.com; #填写绑定证书的域名
ssl on;
ssl_certificate certs/1_www.domain.com_bundle.crt;
ssl_certificate_key certs/2_www.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
location = /mqtt {
proxy_pass http://www.domain.com:8083;
proxy_redirect off;
proxy_set_header Host www.domain.com:8083;
proxy_set_header Sec-WebSocket-Protocol mqtt;
more_clear_headers Sec-WebSocket-Protocol;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
上記のドメイン名と証明書を独自のドメイン名と証明書に置き換え、証明書のパスに注意してください。また、新しい8084ポート(wss)および8083ポート(ws)を使用できますが、上記の8084ポートを使用する場合は、httpsを使用してください。これで、アプレットMQTTクライアントとEMQサーバー間の通信を完了できます。
wxappの作者の助言に感謝します。
参照:
https://github.com/tennessine ...
http://emqtt.com/docs/v2/inst ...
http://www.cnblogs.com/badboy ...
http:// www。 ... cnblogs.com/badboy
HTTPS://github.com/openresty / ...
HTTPS://zhuanlan.zhihu.com/p / ...