如何在Reactjs中通过websocket使用MQTT?
我使用aedes创建如下服务器:如何在Reactjs中通过websocket使用MQTT?,reactjs,websocket,mqtt,aedes,Reactjs,Websocket,Mqtt,Aedes,我使用aedes创建如下服务器: const aedes = require('aedes')() const httpServer = require('http').createServer() const ws = require('websocket-stream') const port = 8888 ws.createServer({ server: httpServer }, aedes.handle) httpServer.listen(port, function () {
const aedes = require('aedes')()
const httpServer = require('http').createServer()
const ws = require('websocket-stream')
const port = 8888
ws.createServer({ server: httpServer }, aedes.handle)
httpServer.listen(port, function () {
console.log('websocket server listening on port ', port)
})
此代码在端口8888正常运行。在Reactjs中使用mqtt react挂钩之后,我创建了以下文件:
import React from 'react';
import { Connector } from 'mqtt-react-hooks';
import { useMqttState } from 'mqtt-react-hooks';
export default function App() {
const { connectionStatus } = useMqttState();
return (
<Connector brokerUrl="mqtt://domain.com:8888">
<h1>{`Status: ${connectionStatus}`}</h1>
</Connector>
);
}
这段代码运行正常
我还更改了客户端文件:
import React from 'react';
var optionsMqtt={
clientId: uuidv4(),
rejectUnauthorized : false,
ca: cert_mqtt.ca_mqtt,
key: cert_mqtt.key_mqtt,
cert: cert_mqtt.crt_mqtt
}
const websocketUrl = "wss://domain.com:8888";
export default function App() {
const client = mqtt.connect(websocketUrl,optionsMqtt);
client.stream.on("error", (err) => {
console.log(`Connection to ${websocketUrl} failed`);
client.end();
});
client.on('connect', function () {
console.log('Connected');
});
return (
<>
<h1>TEST</h1>
<>
);
}
从“React”导入React;
var选项MQTT={
clientId:uuidv4(),
拒绝:错误,
ca:cert_mqtt.ca_mqtt,
key:cert_mqtt.key_mqtt,
证书:cert_mqtt.crt_mqtt
}
常量websocketUrl=”wss://domain.com:8888";
导出默认函数App(){
const client=mqtt.connect(websocketUrl,optionsMqtt);
client.stream.on(“error”,(err)=>{
log(`connectionto${websocketUrl}失败`);
client.end();
});
client.on('connect',function(){
console.log('Connected');
});
返回(
试验
);
}
仍然错误:
ws.js:108 WebSocket连接到'wss://domain.com:8888/'失败:
建立连接时出错:net::ERR\u连接被拒绝
我还关闭了防火墙,打开了8888端口。您已经通过使用URL中的
MQTT://
模式明确告诉客户端使用本机MQTT
将其更改为
ws://
您已通过在URL中使用MQTT://
模式明确告知客户端使用本机MQTT
将其更改为
ws://
谢谢您,先生。我更新了一点谢谢你,先生。我在上面更新了一点
import React from 'react';
var optionsMqtt={
clientId: uuidv4(),
rejectUnauthorized : false,
ca: cert_mqtt.ca_mqtt,
key: cert_mqtt.key_mqtt,
cert: cert_mqtt.crt_mqtt
}
const websocketUrl = "wss://domain.com:8888";
export default function App() {
const client = mqtt.connect(websocketUrl,optionsMqtt);
client.stream.on("error", (err) => {
console.log(`Connection to ${websocketUrl} failed`);
client.end();
});
client.on('connect', function () {
console.log('Connected');
});
return (
<>
<h1>TEST</h1>
<>
);
}