我正在使用VPS,并且正在通过MQTT将数据从Arduino发送到服务器。
Mosquitto通过终端成功打印有效载荷,但是当我尝试通过网页实时打印有效载荷时,
如果运行,知道我已经在Mosquitto conf中允许使用websocket了:
{
"france": [{
"manager": "Corinne Diacre",
"world-ranking": "5"
}],
"england": [{
"manager": "Phil Neville",
"world-ranking": "2"
}]
}
我明白了:
connect2you.com.List list = new connect2you.com.List (id, name, genre);
我要发送的主题名称是/ pression,而我使用的代码是:
sudo netstat -plnt
当我运行脚本时,它说“ Mqtt Connected”,什么也没发生。
但是如果我在终端中运行:
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN
13248/mosquitto
tcp 0 0 0.0.0.0:1884 0.0.0.0:* LISTEN
20169/mosquitto
tcp6 0 0 :::1883 :::* LISTEN 13248/mosquitto
我得到了压力值。
如果我将网页保持打开状态几分钟,则会收到此消息:
<script>
var websocket="myserver.ovh.net";
var port= 1884;
var user="username";
var pass="password";
client = new Paho.MQTT.Client(websocket, port, "innovation");
// set callback handlers
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
var options = {
useSSL: false,
userName: user,
password: pass,
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.
document.getElementById("connstatus").innerHTML = "Mqtt Connected";
console.log("Mqtt Connected");
client.subscribe("/pression");
}
function doFail(e){
console.log(e);
}
// called when the client loses its connection
function onConnectionLost(responseObject) {
document.getElementById("connstatus").innerHTML = "Mqtt Not Connected";
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:"+responseObject.errorMessage);
}
}
function onMessageArrived(message) {
console.log("Pression is :");
document.getElementById("connstatus").innerHTML = message.payloadString;
console.log(message.payloadString);
}
</script>
配置文件:
mosquitto_sub -t '/pression'
蚊子日志:
Mqtt Connected
test.html:76 onConnectionLost:AMQJS0008I Socket closed.
答案 0 :(得分:-1)
好的,这里的问题很可能是您在HTML中使用了固定的客户端ID(innovation
)。
您只能将1个客户端与给定的客户端ID连接,因此当连接具有相同ID的新客户端(例如,重新加载页面)时,代理将断开最旧的客户端的连接。
尝试将连接线更改为以下内容:
var clientID = "innovation_" + new Date().getTime();
client = new Paho.MQTT.Client(websocket, port, clientID);