2017-10-03 13 views
0

예 : this 예제와 같이 MQTT 서버를 시작했습니다. 이 코드는 ASP.Net Core 2.0 응용 프로그램에서 호스팅되지만 콘솔 응용 프로그램을 사용해 보았습니다.MQTT.js 클라이언트에서 MQTTNet 서버 사용

위와 동일한 데모를 사용하여 클라이언트를 설정하고 완벽하게 연결합니다. 또한 Android 클라이언트가 정상적으로 연결됩니다. 하지만 MQTT.js 클라이언트 웹 페이지를 배치했지만 net::ERR_CONNECTION_REFUSED 오류를 표시하는 크롬과 연결되지 않습니다.

웹 소켓을 지원하지 않는 서버에서 문제가 있다고 생각합니다. WS 유형으로 클라이언트를 시작하면 연결되지 않기 때문입니다.

var options = new MqttClientOptions 
{ 
    Server = "localhost", 
    //ConnectionType = MqttConnectionType.Tcp // Connects 
    ConnectionType = MqttConnectionType.Ws // Does not connect 
}; 

이제 MQTT.js는 TCP까지 this link는 말하고있다 지원합니다. 그러나 나는 그것을 작동시킬 수없는 것 같습니다.

이 내 페이지 자바 스크립트의 코드 :

var client = mqtt.connect('tcp://localhost') //Also did mqtt://localhost 

client.on('connect', function() { 
    client.subscribe('myTopic') 
    client.publish('myTopic', 'Hello mqtt') 
}) 

client.on('message', function (topic, message) { 
    // message is Buffer 
    console.log(message.toString()) 
    client.end() 
}) 

내가 자바 스크립트 MQTT 클라이언트는 TCP를 사용할 수 있도록하는 방법을 알고 싶어? (다른 js 플러그인 일 수도 있겠습니까?) 또는 대안으로 MQTTNet에서 WebSocket을 어떻게 활성화 할 수 있습니까? 도움 주셔서 감사합니다.

답변

1

MQTT.js는 WebSocket에 고유 MQTT 및 MQTT를 모두 지원하지만, 웹 애플리케이션에 MQTT를 포함시키는 경우 브라우저 샌드 박스가 임의의 TCP 연결을 사용할 수 없으므로 웹 소켓을 통해 MQTT 만 사용할 수 있습니다.

브로커에서 웹 소켓을 활성화하는 경우 코드에서 아무 것도 볼 수 없으므로 github 프로젝트에 대해 세부 사항을 묻기 위해 제기해야 할 수도 있습니다.

+0

답변 해 주셔서 감사합니다. 그냥 조금 지우려면 브라우저가 허용하지 않기 때문에 js가 순전히 tcp 호출을 부를 수 없다고 말하는 것입니까? – Emad

+1

예, 브라우저에서 HTTP 또는 웹 소켓 만 사용할 수 있습니다. MQTT.js는 NodeJS와 함께 사용될 때만 고유 MQTT를 사용할 수 있습니다. – hardillb

+0

.Net의 웹 소켓을 지원하는 브로커 라이브러리를 알고 있습니까? – Emad

0

MQTTnet (2.5)의 다음 버전은 AspNetCore 2.0을 통한 서버의 WebSocket 연결을 지원합니다.