将MQTTNet Server与MQTT.js客户端一起使用

时间:2017-10-03 14:59:24

标签: javascript c# sockets tcp mqtt

我已经启动了一个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。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

MQTT.js确实支持Websockets上的本机MQTT和MQTT,但如果您将其嵌入到Web应用程序中,它只能使用MQTT而不是Websockets,因为浏览器沙箱不允许它使用任意TCP连接。

至于在代理中启用Websockets,我无法在代码中看到任何明显的内容,因此您可能不得不提出并针对github项目提出问题以询问详细信息。

答案 1 :(得分:1)

下一版本的MQTTnet(2.5)将通过AspNetCore 2.0支持服务器的WebSocket连接。