이 JS를 통해 Mosquitto 서버에 연결하려고하면 다음 오류가 발생합니다.
WebSocket connection to 'ws://xx.xxx.xxx.xxx:1883/mqtt' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
콘솔에서 시도했는데 제대로 작동합니다. 공급자 및 소비자로 Java 클라이언트를 사용해 보았지만 제대로 작동합니다. 그래서 나는 그것을 작동시키기 위해 무엇을해야하는지 이해할 수 없습니다.
이것은 JS입니다 :
client = new Paho.MQTT.Client("xx.xxx.xxx.xxx", 1883, "clientId");
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// connect the client
client.connect({onSuccess:onConnect});
이것은 Java (작동 중)입니다.
@Stateless
@LocalBean
public class PahoManager implements MqttCallback {
MqttClient client;
public void init() {
try {
client = new MqttClient("tcp://192.168.50.10:1883", "pahomqttpublish1");
client.connect();
client.subscribe("pahodemo/test");
} catch (MqttException e) {
e.printStackTrace();
}
}
public void doDemo() {
try {
MqttMessage message = new MqttMessage();
message.setPayload("Ciao Pluto".getBytes());
client.publish("pahodemo/test", message);
//client.disconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void connectionLost(Throwable thrwbl) {
System.out.println("Connection Lost");
}
@Override
public void messageArrived(String string, MqttMessage mm) throws Exception {
System.out.println("Message: " + string + mm);
}
@Override
public void deliveryComplete(IMqttDeliveryToken imdt) {
System.out.println("Message delivered");
}
}
hardillb가 말했듯이, mosquitto 는 아직 웹 소켓을 지원 하지 않습니다 . 네이티브 웹 소켓을 원하는 경우 HiveMQ와 같은 다른 솔루션이 있습니다 . 여기 에서 websocket을 지원하는 브로커의 전체 목록을 볼 수 있습니다 (테이블을 오른쪽으로 스크롤해야 할 수도 있음). 다음 블로그 게시물 에서 웹 소켓을 통한 MQTT에 대해 자세히 알아볼 수 있습니다 .
일반적으로 1883이 아닌 웹 소켓 포트에 연결하고 있는지 확인하십시오 . 실제로 이것은 TCP MQTT 클라이언트가 포트 1883에 연결되고 웹 소켓 클라이언트가 8000과 같은 다른 포트에 연결됨을 의미합니다.
일반적인 면책 조항 : 저는 HiveMQ 개발자 중 하나 이므로이 답변은 편향 될 수 있습니다 ;-)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다