我已经启动了一个MQTT服务器,就像this示例一样。 此代码托管在ASP.Net Core 2.0应用程序中,但我试过没有运气的控制台应用程序。
我还使用与上面相同的演示设置了一个客户端,它完美连接。 Android客户端连接也很好。但我已经放置了一个MQTT.js客户端网页,但它不会与显示net::ERR_CONNECTION_REFUSED
错误的chrome连接。
我认为问题在于服务器不支持Web套接字。因为如果我使用WS
类型启动我的客户端,它将无法连接。
var options = new MqttClientOptions
{
Server = "localhost",
//ConnectionType = MqttConnectionType.Tcp // Connects
ConnectionType = MqttConnectionType.Ws // Does not connect
};
现在MQTT.js支持TCP
到目前为止this link正在讲述。但我似乎无法工作。
这是我的网页javascript中的代码:
var client = mqtt.connect('tcp://localhost') //Also did mqtt://localhost
client.on('connect', function () {
client.subscribe('myTopic')
client.publish('myTopic', 'Hello mqtt')
})
client.on('message', function (topic, message) {
// message is Buffer
console.log(message.toString())
client.end()
})
我想知道如何让javascript MQTT客户端使用TCP? (可能还有其他任何js插件吗?)或者我如何在MQTTNet中启用WebSockets。 谢谢你的帮助。
答案 0 :(得分:2)
MQTT.js确实支持Websockets上的本机MQTT和MQTT,但如果您将其嵌入到Web应用程序中,它只能使用MQTT而不是Websockets,因为浏览器沙箱不允许它使用任意TCP连接。
至于在代理中启用Websockets,我无法在代码中看到任何明显的内容,因此您可能不得不提出并针对github项目提出问题以询问详细信息。
答案 1 :(得分:1)
下一版本的MQTTnet(2.5)将通过AspNetCore 2.0支持服务器的WebSocket连接。