-1

我正在学习 MQTT,并将开源 mosca 代理部署到一个 azure Web 应用程序。问题是代理在 2 台之间工作,但是当我尝试将我的 arduino nano 连接到代理时,它总是失败。这是我的服务器代码:

//Mosca
const mosca = require('mosca')
const settings = {
   http: {
    // port for websockets, MQTT is running in default port 1883
    port: 8000,
    bundle: true,
    static: './public'
  }
}

// start mosca
const moscaServer = new mosca.Server(settings)
moscaServer.on('ready', setup)

// fired when the mqtt server is ready
function setup() {
  console.log('Mosca server is up and running in port 1883!')
  console.log('Using port 8000 for MQTT over Web-Sockets!')
}

// fired when a client is connected
moscaServer.on('clientConnected', function(client) {
  console.log('client connected', client.id)
})

// fired when a message is received
moscaServer.on('published', function(packet, client) {
  //if (packet.topic == '/example') {
    console.log(packet.payload.toString('utf-8'))
  //}
})

// fired when a client subscribes to a topic
moscaServer.on('subscribed', function(topic, client) {
  console.log('subscribed : ', topic)
})

// fired when a client unsubscribes to a topic
moscaServer.on('unsubscribed', function(topic, client) {
  console.log('unsubscribed : ', topic)
})

// fired when a client is disconnecting
moscaServer.on('clientDisconnecting', function(client) {
  console.log('clientDisconnecting : ', client.id)
})

// fired when a client is disconnected
moscaServer.on('clientDisconnected', function(client) {
  console.log('clientDisconnected : ', client.id)
})
4

1 回答 1

0

从 Azure 应用服务 WebApp 的角度来看 - 默认情况下,应用服务假定您的自定义容器正在侦听端口 80。如果您的容器侦听不同的端口,请在您的应用服务应用中设置 WEBSITES_PORT 应用设置。

可以通过 Internet 访问 WebApp 是通过已经公开的 HTTP (80) 和 HTTPS (443) TCP 端口。

应用服务当前允许您的容器只为 HTTP 请求公开一个端口。我不太确定 - MQTT 代理。另外,您尝试连接的确切程度。

从应用服务 - Docker Compose 选项 - 请检查文档,支持和不支持的配置。• 只能打开一个容器进行访问 • 只能访问端口 80 和 8080(暴露端口)

请参阅此文档以获取更多详细信息。

注意:Linux 应用程序支持 Web 套接字。

于 2020-10-04T20:24:12.580 回答