国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MQTTX工具上的 mqtt mqtts ws wss的區(qū)別,以及常見問題解答

這篇具有很好參考價值的文章主要介紹了MQTTX工具上的 mqtt mqtts ws wss的區(qū)別,以及常見問題解答。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ws?-->?WebSocket 非加密(端口8083)

wss --> WebSocket SSL 加密 (端口8084)

mqtt --> mqtt 非加密 (端口1883 )

mqtts -->mqtt 加密?(端口8884)

WebSocket 使得客戶端和服務(wù)器之間的數(shù)據(jù)交換變得更加簡單,允許服務(wù)端主動向客戶端推送數(shù)據(jù)

初學(xué)者容易出現(xiàn)以下幾個錯誤:

  • 連接地址沒有指明協(xié)議:WebSocket 作為一種通信協(xié)議,其使用?ws?(非加密)、wss(SSL 加密) 作為協(xié)議標(biāo)識。MQTT.js 客戶端支持多種協(xié)議,連接地址需指明協(xié)議類型;
  • 連接地址沒有指明端口:MQTT 并未對 WebSocket 接入端口做出規(guī)定,EMQX 上默認(rèn)使用?8083?8084?分別作為非加密連接、加密連接端口。而 WebSocket 協(xié)議默認(rèn)端口同 HTTP 保持一致 (80/443),不填寫端口則表明使用 WebSocket 的默認(rèn)端口連接;而使用標(biāo)準(zhǔn) MQTT 連接時則無需指定端口,如 MQTT.js 在 Node.js 端可以使用?mqtt://localhost?連接至標(biāo)準(zhǔn) MQTT 1883 端口,當(dāng)連接地址是?mqtts://localhost?則連接到 8884 端口;
  • 連接地址無路徑:MQTT-WebSoket 統(tǒng)一使用?/path?作為連接路徑,連接時需指明,在 EMQX 上使用的路徑為?/mqtt
  • 協(xié)議與端口不符:使用了?wss?連接卻連接到?8083?端口;
  • 在 HTTPS 下使用非加密的 WebSocket 連接: Google 等機構(gòu)在推進 HTTPS 的同時也通過瀏覽器約束進行了安全限定,即 HTTPS 連接下瀏覽器會自動禁止使用非加密的?ws?協(xié)議發(fā)起連接請求;
  • 證書與連接地址不符: 篇幅較長,詳見下文?EMQ 啟用 SSL/TLS 加密連接

連接選項?

MQTTX工具上的 mqtt mqtts ws wss的區(qū)別,以及常見問題解答

  • keepalive:心跳時間,默認(rèn) 60秒,設(shè)置 0 為禁用;
  • clientId: 客戶端 ID ,默認(rèn)通過?'mqttjs_' + Math.random().toString(16).substr(2, 8)?隨機生成;
  • username:連接用戶名(可選);
  • password:連接密碼(可選);
  • clean:true,設(shè)置為 false 以在離線時接收 QoS 1 和 2 消息;
  • reconnectPeriod:默認(rèn) 1000 毫秒,兩次重新連接之間的間隔,客戶端 ID 重復(fù)、認(rèn)證失敗等客戶端會重新連接;
  • connectTimeout:默認(rèn) 30 * 1000毫秒,收到 CONNACK 之前等待的時間,即連接超時時間;
  • will:遺囑消息,當(dāng)客戶端嚴(yán)重斷開連接時,Broker 將自動發(fā)送的消息。 一般格式為:
    • topic:要發(fā)布的主題
    • payload:要發(fā)布的消息
    • qos:QoS
    • retain:保留標(biāo)志

訂閱/取消訂閱

連接成功之后才能訂閱,且訂閱的主題必須符合 MQTT 訂閱主題規(guī)則;

注意 JavaScript 的異步非阻塞特性,只有在 connect 事件后才能確保客戶端已成功連接,或通過?client.connected?判斷是否連接成功:

client.on('connect', () => {
  console.log('Client connected:' + clientId)
  // Subscribe
  client.subscribe('testtopic', { qos: 0 })
})
// Unsubscribe
client.unubscribe('testtopic', () => {
  console.log('Unsubscribed')
})

發(fā)布/接收消息

發(fā)布消息到某主題,發(fā)布的主題必須符合 MQTT 發(fā)布主題規(guī)則,否則將斷開連接。發(fā)布之前無需訂閱該主題,但要確??蛻舳艘殉晒B接:

// Publish
client.publish('testtopic', 'ws connection demo...!', { qos: 0, retain: false })
// Received
client.on('message', (topic, message, packet) => {
  console.log('Received Message: ' + message.toString() + '\nOn topic: ' + topic)
})

微信小程序

MQTT.js 庫對微信小程序特殊處理,使用?wxs?協(xié)議標(biāo)識符。注意小程序開發(fā)規(guī)范中要求必須使用加密連接,連接地址應(yīng)類似為?wxs://broker.emqx.io:8084/mqtt

EMQX 啟用 SSL/TLS 加密連接

EMQ 內(nèi)置自簽名證書,默認(rèn)已經(jīng)啟動了加密的 WebSocket 連接,但大部分瀏覽器會報證書無效錯誤如?net::ERR_CERT_COMMON_NAME_INVALID?(Chrome、360 等 webkit 內(nèi)核瀏覽器在開發(fā)者模式下, Console 選項卡 可以查看大部分連接錯誤)。導(dǎo)致該錯誤的原因是瀏覽器無法驗證自簽名證書的有效性,讀者需從證書頒發(fā)機構(gòu)購買可信任證書,并參考該篇文章中的相應(yīng)部分進行配置操作:EMQX MQTT 服務(wù)器啟用 SSL/TLS 安全連接。

這里就總結(jié)啟用 SSL/TLS 證書需要具備的條件是:

  • 將域名綁定到 MQTT 服務(wù)器公網(wǎng)地址:CA 機構(gòu)簽發(fā)的證書簽名是針對域名的;
  • 申請證書:向 CA 機構(gòu)申請所用域名的證書,注意選擇一個可靠的 CA 機構(gòu)且證書要區(qū)分泛域名與主機名;
  • 使用加密連接的時候選擇?wss?協(xié)議,并?使用域名連接?:綁定域名-證書之后,必須使用域名而非 IP 地址進行連接,這樣瀏覽器才會根據(jù)域名去校驗證書以在通過校驗后建立連接。

EMQX 配置

打開?etc/emqx.conf?配置文件,修改以下配置:

# wss 監(jiān)聽地址
listener.wss.external = 8084

# 修改密鑰文件地址
listener.wss.external.keyfile = etc/certs/cert.key

# 修改證書文件地址
listener.wss.external.certfile = etc/certs/cert.pem

完成后重啟 EMQX 即可。

?可以使用你的證書與密鑰文件直接替換到 etc/certs/ 下。

在 Nginx 上配置反向代理與證書

使用 Nginx 來反向代理并加密 WebSocket 可以減輕 EMQX 服務(wù)器計算壓力,同時實現(xiàn)域名復(fù)用,同時通過 Nginx 的負(fù)載均衡可以分配多個后端服務(wù)實體。文章來源地址http://www.zghlxwxcb.cn/news/detail-401511.html

# 建議 WebSocket 也綁定到 443 端口
listen 443, 8084;
server_name example.com;

ssl on;

ssl_certificate /etc/cert.crt;  # 證書路徑
ssl_certificate_key /etc/cert.key; # 密鑰路徑


# upstream 服務(wù)器列表
upstream emq_server {
    server 10.10.1.1:8883 weight=1;
    server 10.10.1.2:8883 weight=1;
    server 10.10.1.3:8883 weight=1;
}

# 普通網(wǎng)站應(yīng)用
location / {
    root www;
    index index.html;
}

# 反向代理到 EMQX 非加密 WebSocket
location / {
    proxy_redirect off;
    # upstream
    proxy_pass http://emq_server;

    proxy_set_header Host $host;
    # 反向代理保留客戶端地址
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
    # WebSocket 額外請求頭
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection “upgrade”;
}

到了這里,關(guān)于MQTTX工具上的 mqtt mqtts ws wss的區(qū)別,以及常見問題解答的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 運維相關(guān)(一) - Vue項目配置WebSocket連接{ws、wss 連接方式}

    運維相關(guān)(一) - Vue項目配置WebSocket連接{ws、wss 連接方式}

    項目使用的是ruoyi的前后端分離框架 項目需要使用到 websocket , 在本地使用 ws 連接方式是沒問題 , 但是服務(wù)器上邊使用的是nginx + ssl 證書 https域名訪問的方式部署的 使用普通的 ws 連接是不可以成功的 需要使用 wss的方式 2.1 前端 vue.config.js 的代碼 這里target: 里邊指向的都是后

    2024年02月01日
    瀏覽(26)
  • Nginx配置WebSocket(WS)和WebSocket Secure(WSS)的完整指南

    Nginx是一款廣泛使用的高性能Web服務(wù)器和反向代理服務(wù)器。除了傳統(tǒng)的HTTP和HTTPS協(xié)議支持外,Nginx還可以配置WebSocket(WS)和WebSocket Secure(WSS),以便實現(xiàn)實時雙向通信。本文將提供關(guān)于如何在Nginx中配置和使用WebSocket和WebSocket Secure的詳細(xì)指南。 要開始配置WebSocket和WebSocket

    2024年02月16日
    瀏覽(26)
  • ubuntu18安裝opensips3.4,開啟ws/wss/http接口模塊

    ubuntu18安裝opensips3.4,開啟ws/wss/http接口模塊

    、如果是centos 7安裝則使用yum 命令。 添加庫地址 注意系統(tǒng)類型,選擇對應(yīng)的系統(tǒng)類型和版本 ? curl https://apt.opensips.org/opensips-org.gpg -o /usr/share/keyrings/opensips-org.gpg ? echo \\\"deb [signed-by=/usr/share/keyrings/opensips-org.gpg] https://apt.opensips.org bionic 3.4-releases\\\" /etc/apt/sources.list.d/opensips.list ?

    2024年04月14日
    瀏覽(20)
  • STM32 + ESP32(AT固件 MQTT協(xié)議) + MQTTX(桌面終端) + (EMQX消息服務(wù)器)

    STM32 + ESP32(AT固件 MQTT協(xié)議) + MQTTX(桌面終端) + (EMQX消息服務(wù)器)

    翻出老物件,搭建一個簡單的 IOT 開發(fā)環(huán)境,也算是廢物利用了?,接下來加傳感器。 1. STM32? 采集數(shù)據(jù): ? ? ?RTOS。 ? ? ?資源相對比較豐富,可以根據(jù)項目需求定制。 2. ESP32? 網(wǎng)絡(luò)傳輸(AT固件 MQTT協(xié)議)?: ? ? AT:封裝好的接口,擴展性不是那么好,業(yè)務(wù)簡單的話將就可以

    2024年02月08日
    瀏覽(27)
  • 記錄一次nginx+Websocket反向代理時報錯504-gateway TimeOut和各種開發(fā)遇到的坑(wss鏈接404、ws鏈接400 bad Requset等等)

    需要反向代理轉(zhuǎn)發(fā)websocket鏈接。 1、nginx路徑未匹配上 2、鏈接上后,在默認(rèn)的http鏈接時長中沒有發(fā)送心跳包,nginx自動關(guān)閉http鏈接,一般默認(rèn)為1分鐘 3、http鏈接轉(zhuǎn)發(fā)后并沒有升級為websockt鏈接(Bad Request 400錯誤) 4、websocket長鏈接1分鐘后自動關(guān)閉 5、wss鏈接通過nginx轉(zhuǎn)發(fā)時,

    2024年02月15日
    瀏覽(27)
  • 設(shè)計師需要掌握的網(wǎng)站設(shè)計相關(guān)知識、技巧、工具以及在建站過程中遇到的常見問題和解決方案

    作者:禪與計算機程序設(shè)計藝術(shù) “一個設(shè)計師的手冊:關(guān)于網(wǎng)站設(shè)計的一切你需要知道”,本文全面系統(tǒng)地介紹了設(shè)計師需要掌握的網(wǎng)站設(shè)計相關(guān)知識、技巧、工具以及在建站過程中遇到的常見問題和解決方案,從基礎(chǔ)知識到常用效果、細(xì)節(jié)調(diào)整、模板制作、SEO優(yōu)化,都有詳

    2024年02月06日
    瀏覽(23)
  • 關(guān)于C或C++,數(shù)組的強制類型轉(zhuǎn)換,uint8_t與char的區(qū)別,uint8_t*與char*的兼容性問題以及一些指針的常見問題

    關(guān)于C或C++,數(shù)組的強制類型轉(zhuǎn)換,uint8_t與char的區(qū)別,uint8_t*與char*的兼容性問題以及一些指針的常見問題

    1.類型定義: uint8_t:這是一個無符號 8 位整數(shù)類型,定義在 stdint.h 或 inttypes.h 頭文件中。它是標(biāo)準(zhǔn)的固定寬度整數(shù)類型之一,確保在所有平臺上占用 8 位(1 字節(jié))。 char:這是 C 語言的基本字符存儲類型,用于存儲單個字符。在不同的系統(tǒng)和編譯器中,char 可以是有符號的

    2024年01月24日
    瀏覽(27)
  • taro 支付寶/微信小程序的chooseImage真機和開發(fā)工具上的區(qū)別

    taro 支付寶/微信小程序的chooseImage真機和開發(fā)工具上的區(qū)別

    支付寶小程序 微信小程序

    2024年02月10日
    瀏覽(24)
  • grafana 的 ws websocket 連接不上的解決方式

    grafana 的 ws websocket 連接不上的解決方式

    使用了多層的代理方式,一層沒有此問題 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志報錯 msg=“Request Completed” method=GET path=/api/live/ws status=403

    2024年02月12日
    瀏覽(31)
  • Nginx 配置https以及wss

    可以在阿里云申請免費ssl證書,一年更換一次 注意: 1、配置完成后nginx需要重啟,reload證書是不會生效的 2、如需要支持wss協(xié)議,需要增加配置: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection \\\"upgrade\\\"; 3、配置https之后,最后就禁用掉http,通過如下配置,強制跳轉(zhuǎn)https

    2024年02月11日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包