Java 通过反向代理的 Paho MQTT 客户端连接
Java Paho MQTT client connection over reverse proxy
我正在使用 Java paho 库与 mqtt 代理进行通信。使用下面的代码我可以正常连接。
MqttClient publisher = new MqttClient("tcp://192.168.1.100:1883","randomClientId");
MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(true);
options.setConnectionTimeout(10);
publisher.connect(options);
但是,我有一个反向代理后面的mqtt代理,所以我不需要打开一个单独的端口。所以我需要做的不是连接到“tcp://192.168.1.100:1883”我想连接到“tcp://192.168.1.100/mqtt”。
但是,当我尝试这样做时,出现如下错误:
Exception in thread "main" java.lang.IllegalArgumentException: URI path must be empty "tcp://13.251.5.125/mqtt"
例如,我可以使用 python 中的库来很好地做到这一点,但是使用 Java 客户端我不确定该怎么做。
原生 MQTT 无法做到这一点。
使它起作用的唯一方法是在 Websockets 上使用 MQTT。在这种情况下,您需要传递如下所示的 URI:
ws://192.168.1.100/mqtt
注意它现在以 ws://
而非 tcp://
开头
我正在使用 Java paho 库与 mqtt 代理进行通信。使用下面的代码我可以正常连接。
MqttClient publisher = new MqttClient("tcp://192.168.1.100:1883","randomClientId");
MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(true);
options.setConnectionTimeout(10);
publisher.connect(options);
但是,我有一个反向代理后面的mqtt代理,所以我不需要打开一个单独的端口。所以我需要做的不是连接到“tcp://192.168.1.100:1883”我想连接到“tcp://192.168.1.100/mqtt”。 但是,当我尝试这样做时,出现如下错误:
Exception in thread "main" java.lang.IllegalArgumentException: URI path must be empty "tcp://13.251.5.125/mqtt"
例如,我可以使用 python 中的库来很好地做到这一点,但是使用 Java 客户端我不确定该怎么做。
原生 MQTT 无法做到这一点。
使它起作用的唯一方法是在 Websockets 上使用 MQTT。在这种情况下,您需要传递如下所示的 URI:
ws://192.168.1.100/mqtt
注意它现在以 ws://
而非 tcp://