Settings proxy with MQTT(MQTT 设置代理)

如何在使用MQTT协议链接设置代理参数, 以Azure为例

背景

在一些公司网络层面,会设置一层防火墙来屏蔽一些互联网与公司网络的交互,如果内部应用需要与外部的网络进行链接的时候,就需要公司层面提供一层代理地址。

MQTT 协议

MQTT: Message Queue Telemetry Transport 消息队列遥测传输协议 基于tcp/ip或者其他的无损双向的网络链接.是一种客户机-服务器发布/订阅消息传输协议,广泛的应用于如机器对机器(M2M)和物联网(IoT)环境中的通信的方式中。

MQTT SDK 设置代理

MQTT协议是不支持代理的方式,我们需要按照一种基于 Web 套接字的 MQTT 协议参数,以这种方式来配置代理,可以做到以HTTP层面的代理服务,各类SDK的厂家应该都提供了类似的SDK如Azure MQTT-CONNECT-SDK Screen Shot 2022-03-29 at 1.41.19 PM.png

使用 MQTTWS NODE 示例

  • 引用https-proxy-agent package https-proxy-agent: 负责做http/https层面的消息代理。
  • 引用MqttWs package MqttWs: Azure 提供的MQTT SDK

Demo如下:

var HttpsProxyAgent = require('https-proxy-agent')
var Protocol = require('azure-iot-device-mqtt').MqttWs
var Client = require('azure-iot-device').Client

var client = Client.fromConnectionString(connectionString, Protocol)

client.setOptions(
 {
   mqtt: {
     webSocketAgent: new HttpsProxyAgent(`${proxy}`),
   },
 }
)
复制代码

猜你喜欢

转载自juejin.im/post/7080394287828959246
今日推荐