如何通过javascript传递mqtt字符串以转换并插入mysql?

如何通过javascript传递mqtt字符串以转换并插入mysql?,javascript,mqtt,Javascript,Mqtt,我有一个设备,通过mqtt将数据字符串发送到我的ubuntu上的mosquitto代理。我目前使用node red接收这些字符串,并使用javascript function node执行我需要的所有其他操作,数据转换,插入到查询等,但有一件事我挣扎是我想离开节点红色,所以我只有纯代码的文件,我已经尝试了npm网站上提供的代码,但我需要一个白痴指南哈哈,有人有任何想法的地方,我可以看看或有人能够帮助我?我的所有html文件当前都显示在apache服务器上 我目前的mqtt设置是在ubuntu上运

我有一个设备,通过mqtt将数据字符串发送到我的ubuntu上的mosquitto代理。我目前使用node red接收这些字符串,并使用javascript function node执行我需要的所有其他操作,数据转换,插入到查询等,但有一件事我挣扎是我想离开节点红色,所以我只有纯代码的文件,我已经尝试了npm网站上提供的代码,但我需要一个白痴指南哈哈,有人有任何想法的地方,我可以看看或有人能够帮助我?我的所有html文件当前都显示在apache服务器上

我目前的mqtt设置是在ubuntu上运行的,我在配置文件中启用了websockets,listner为1883

莫斯基托构型

listener 1883
listener 1884
protocol websockets

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d
我尝试过的mqtt代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>  <script type="text/javascript">

var wsbroker = "localhost";  //mqtt websocket enabled broker
var wsport = 1883 // port for above
var client = new Paho.MQTT.Client(wsbroker, wsport,
    "myclientid_" + parseInt(Math.random() * 100, 10));
client.onConnectionLost = function (responseObject) {
  console.log("connection lost: " + responseObject.errorMessage);
};
client.onMessageArrived = function (message) {
  console.log(message.destinationName, ' -- ', message.payloadString);
};
var options = {
  timeout: 3,
  onSuccess: function () {
    console.log("mqtt connected");
    client.subscribe('/tracked', {qos: 1});

  },
  onFailure: function (message) {
    console.log("Connection failed: " + message.errorMessage);
  }
};
 function init() {
  client.connect(options);
 }
 </head>
 <body onload="init();">
</body>

var wsbroker=“localhost”//支持mqtt websocket的代理
var wsport=1883//以上端口
var client=new Paho.MQTT.client(wsbroker、wsport、,
“myclientid_u2;”+parseInt(Math.random()*100,10));
client.onConnectionLost=函数(responseObject){
日志(“连接丢失:+responseObject.errorMessage”);
};
client.onMessageArrived=函数(消息){
log(message.destinationName,'--',message.payloadString);
};
变量选项={
超时时间:3,
onSuccess:函数(){
log(“mqtt已连接”);
subscribe('/tracked',{qos:1});
},
onFailure:功能(消息){
日志(“连接失败:+message.errorMessage”);
}
};
函数init(){
client.connect(选项);
}

如评论中所述

您正在尝试连接到端口1883,该端口是本机MQTT端口

要从需要在Websocket上使用MQTT的网页使用Javascript客户端,您已经在端口1884上添加了Websocket侦听器

因此,您需要按如下方式编辑代码:

var wsbroker = "localhost";  //mqtt websocket enabled broker
var wsport = 1884 // Websocket port for above
var client = new Paho.MQTT.Client(wsbroker, wsport,
    "myclientid_" + parseInt(Math.random() * 100, 10));

这个问题太广泛了,如果需要帮助修复,您需要向我们展示您尝试了什么以及它产生的错误消息。此外,询问指南/教程也是堆栈溢出的主题。(另外,您希望通过远离节点红色来实现什么?)@hardillb我已经用我尝试过的代码更新了主要帖子,但是我在chrome控制台中遇到以下错误:WebSocket连接到“ws://localhost:1883/mqtt”失败:连接建立错误:net::ERR_connection_拒绝我使用节点红色的端口1883,它工作正常请阅读以下关于如何请求良好的帮助关于堆栈溢出的问题。此外,您还没有包含有关如何配置代理(或使用哪个代理)的任何信息。我猜是Mosquito,您还没有启用websockets支持,当您启用时,它将位于与1883不同的端口(这是本机MQTT而不是websockets上的MQTT)抱歉,是的,我使用listener 1883在我的配置中设置了一个websocket.conf文件编辑要包含到配置中的问题,因此我已根据以下规范更新了代码,现在我获得到“ws://localhost:1884/mqtt”的websocket连接失败:连接建立错误:net::ERR_connection_Paho.MQTT.ClientImpl._doConnect@mqttws31.js:977 testmqtt.html:25连接失败:AMQJS0007E套接字错误:未定义。是否检查了MOSQUITO仍在运行?是,我的节点仍然处于红色,这会导致问题吗?您是否在与node red和代理相同的计算机上运行web浏览器?否,因此我的node red和代理托管在AWS上,使用apache作为web服务器,然后我通过IP连接到它,但所有文件都设置为本地主机,因为node red、代理和apache位于AWS上