2012-09-19 2 views
4

나는 오랫동안 지금까지 검색했지만 아직 유용한 것을 찾지 못했습니다.
MQTT-Javascript-Client를 구현하려고합니다. Mosquitto V1.0이 출시됨에 따라 http://mosquitto.org/js/mosquitto-1.0.js에 javascript/websocket-client가 릴리스되었습니다.
하지만 올바른 방법으로 구현하는 방법을 모르겠습니다.
예 : http://broker.mqttdashboard.com의 example-server를 브로커로 사용합니다. xampp-server에서 다음 html을 실행하면 아무 일도 일어나지 않으며 브로커 측에서는 클라이언트가 연결되지 않습니다. 내가 잘못 구현 한 방법이 있다고 가정합니다. 누군가가 이것으로 나를 도울 수 있다면 좋을 것입니다.MQTT Javascript

<html><head> 
<script type="text/JavaScript" src="mosquitto-1.0.js"></script> 

<script type="text/JavaScript"> 
    var t = new Mosquitto(); 
    t.connect('ws://broker.mqttdashboard.com:1883/',10); 
    t.subscribe("mqttdashboard/testtopic", 0); 
</script> 
</head> 
<body></body></html> 

또한 node.js-thing에 대해서도 알고 있지만 websocket-way를 선호합니다. 감사합니다. .

답변

6

연결하려는 서버가 웹 소켓을 지원해야합니다. 당신이 항구 1883에 연결하고 있다는 사실은 그것이 나에게 제안하지 않습니다! 여기서 일반적인 것은 포트 80 (웹)에 연결 한 다음 mqtt와 통신하는 웹 소켓 연결로 업그레이드하는 것입니다. 일반적으로 웹 서버는 mqtt 브로커와 대화하고 그렇게하도록 구성되어야합니다. 자동으로 발생하는 것은 아닙니다.

URL로 ws : //test.mosquitto.org/ws를 사용해보세요. 현재 알고있는 유일한 websocket 인 mqtt 서버입니다.

0

The MQTT Dashboard은 이제 포트 8000에서 웹 소켓을 지원합니다. 버전 1.4에서 기본 웹 소켓을 지원하는 HiveMQ MQTT broker을 사용합니다.

Mosquitto.js는 이제 더 이상 사용되지 않는 것 같습니다. 따라서 Eclipse Paho.js을 Javascript MQTT 클라이언트로 사용하는 것이 좋습니다. 이처럼 수정할 때

mosquitto.js와 귀하의 코드는 이제 작동합니다 :

<html><head> 
<script type="text/JavaScript" src="mosquitto-1.0.js"></script> 

<script type="text/JavaScript"> 
    var t = new Mosquitto(); 
    t.connect('ws://broker.mqttdashboard.com:8000/',10); 
    t.subscribe("mqttdashboard/testtopic", 0); 
</script> 
</head> 
<body></body></html> 
+0

에 사용해 보시기 바랍니다. 하지만 다음과 같은 오류가 발생했습니다 : 'ws : //broker.mqttdashboard.com : 8000 /'에 대한 WebSocket 연결이 실패했습니다 : 연결 설정 오류 : net :: ERR_CONNECTION_REFUSED' –

+0

포트 800이 방화벽에 의해 차단 되었습니까? 그게 당신을 위해 작동하는 경우이 websocket 클라이언트와 함께 시도 할 수 있습니까? http://www.hivemq.com/demos/websocket-client/ –

+0

내 대답에 무엇이 잘못되었는지 자세히 설명해 줄 수 있습니까? –

0

가 WebSocket을위한 broker.hivemq.com:8000을 시도, 그것은 WS를 지원합니다. 내가이 함께 노력

작동해야하며 지금까지

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"> 
</script> 
<script type="text/javascript"> 

client = new Paho.MQTT.Client("broker.hivemq.com", 8000, "clientId-" + parseInt(Math.random() * 100, 10)); 
// set callback handlers 
client.onConnectionLost = onConnectionLost; 
    client.onMessageArrived = onMessageArrived; 
    var options = { 
    onSuccess:onConnect, 
    onFailure:doFail 
    } 
    // connect the client 
    client.connect(options); 
    // called when the client connects 
    function onConnect() { 
    // Once a connection has been made, make a subscription and send a message. 
    console.log("onConnect"); 
    client.subscribe("my/topic1"); 

    } 
    function doFail(e){ 
    console.log(e); 
    } 
    // called when the client loses its connection 
    function onConnectionLost(responseObject) { 
    if (responseObject.errorCode !== 0) { 
     console.log("onConnectionLost:"+responseObject.errorMessage); 
    } 
    } 

    // called when a message arrives 
    function onMessageArrived(message) { 
    console.log("onMessageArrived:"+message.payloadString); 
    document.write(message.payloadString); 
    alert("messgaearrived!") 
    } 

</script> 

도했다 코드를 시도 cloudmqtt.com