使用设备和浏览器连接到 MQTT Broker
Connect to MQTT Broker With Device and Browser
我可以创建一个 MQTT 代理。我也可以创建一个网络客户端。但是设备有问题。我尝试连接设备的 IP(ws://192.168.1.240:1883)。设备无法连接到代理。 Web 客户端可以与 WebSocket 连接。
const aedes = require('aedes')()
const httpServer = require('http').createServer()
const ws = require('websocket-stream')
const port = 1883
ws.createServer({ server: httpServer }, aedes.handle)
httpServer.listen(port, function () {
console.log('websocket server listening on port ', port)
});
我尝试使用另一种方式来创建 MQTT 代理并且它运行了。代码如下。这次设备连接到代理。但是 Web 浏览器无法连接到代理。浏览器想要连接 ws://192.168.1.240:1883
。所以浏览器想要 WebSocket
.
const aedes = require('aedes')()
var server = require('net').createServer(aedes.handle);
var cors = require('cors');
const ip = "192.168.1.240";
const port = 1883;
const httpServer = require('http').createServer();
const io = require('socket.io')(httpServer, {
cors: {
origin: "*",
credentials: true
}
});
httpServer.listen(8091, () => {
console.log("Http Server and Socket.io are Running !");
});
server.listen(port, ip, () => {
console.log("TCP Server is Running !")
});
如何为设备和浏览器创建可连接的代理或服务器?
谢谢
如果您想同时使用 MQTT over Websockets 和本机 MQTT,您需要将代理配置为侦听 2 个单独的端口。您不能在同一端口上同时收听两者。
例如这将接受 1883 上的本机 MQTT 连接和 8883 上的 Websocket 连接
const aedes = require('aedes')()
const server = require('net').createServer(aedes.handle)
const httpServer = require('http').createServer()
const ws = require('websocket-stream')
const port = 1883
const wsPort = 8883
server.listen(port, function () {
console.log('server started and listening on port ', port)
})
ws.createServer({ server: httpServer }, aedes.handle)
httpServer.listen(wsPort, function () {
console.log('websocket server listening on port ', wsPort)
})
我可以创建一个 MQTT 代理。我也可以创建一个网络客户端。但是设备有问题。我尝试连接设备的 IP(ws://192.168.1.240:1883)。设备无法连接到代理。 Web 客户端可以与 WebSocket 连接。
const aedes = require('aedes')()
const httpServer = require('http').createServer()
const ws = require('websocket-stream')
const port = 1883
ws.createServer({ server: httpServer }, aedes.handle)
httpServer.listen(port, function () {
console.log('websocket server listening on port ', port)
});
我尝试使用另一种方式来创建 MQTT 代理并且它运行了。代码如下。这次设备连接到代理。但是 Web 浏览器无法连接到代理。浏览器想要连接 ws://192.168.1.240:1883
。所以浏览器想要 WebSocket
.
const aedes = require('aedes')()
var server = require('net').createServer(aedes.handle);
var cors = require('cors');
const ip = "192.168.1.240";
const port = 1883;
const httpServer = require('http').createServer();
const io = require('socket.io')(httpServer, {
cors: {
origin: "*",
credentials: true
}
});
httpServer.listen(8091, () => {
console.log("Http Server and Socket.io are Running !");
});
server.listen(port, ip, () => {
console.log("TCP Server is Running !")
});
如何为设备和浏览器创建可连接的代理或服务器?
谢谢
如果您想同时使用 MQTT over Websockets 和本机 MQTT,您需要将代理配置为侦听 2 个单独的端口。您不能在同一端口上同时收听两者。
例如这将接受 1883 上的本机 MQTT 连接和 8883 上的 Websocket 连接
const aedes = require('aedes')()
const server = require('net').createServer(aedes.handle)
const httpServer = require('http').createServer()
const ws = require('websocket-stream')
const port = 1883
const wsPort = 8883
server.listen(port, function () {
console.log('server started and listening on port ', port)
})
ws.createServer({ server: httpServer }, aedes.handle)
httpServer.listen(wsPort, function () {
console.log('websocket server listening on port ', wsPort)
})