1.MQTTNET属于下面哪一种协议?
2.为什么用mqttws31可以连接Websocket的服务器,但不能连接MQTTNET的服务器呢?
协议 服务器 端口 MQTT版本 备注
TCP broker-cn.emqx.io 1883 5.0/3.1.1 可以订阅 testtopic/# 主题
TCP/TLS broker-cn.emqx.io 8883 5.0/3.1.1 可以订阅 testtopic/# 主题
Websocket broker-cn.emqx.io 8083 5.0/3.1.1 可以订阅 testtopic/# 主题
Websocket/TLS broker-cn.emqx.io 8084 5.0/3.1.1 可以订阅 testtopic/# 主题
4种都是,你上个帖子我们已经给你提示了
可惜你不看
再次提示:请自己开启相关服务功能。如果是安装emqx这种成品,自己在管理面板开启。
如果你是说mqttnet,那个需要你自己写相关代码开启相关功能
至于如何开启,让mqttnet的官方demo
我们看看下面几句
webBuilder.UseKestrel(
o =>
{
// 官方写很明白,这是tcp,也就是你的第一种
// This will allow MQTT connections based on TCP port 1883.
o.ListenAnyIP(1883, l => l.UseMqtt());
//官方依旧写的明白,这是http的支持ws处理,也就是你的第3种
//当然他这里监听的是5000,你换成8083就一模一样了
// This will allow MQTT connections based on HTTP WebSockets with URI "localhost:5000/mqtt"
// See code below for URI configuration.
o.ListenAnyIP(5000); // Default HTTP pipeline
});
在看第2段
endpoints =>
{
endpoints.MapConnectionHandler<MqttConnectionHandler>(
"/mqtt",
httpConnectionDispatcherOptions => httpConnectionDispatcherOptions.WebSockets.SubProtocolSelector =
protocolList => protocolList.FirstOrDefault() ?? string.Empty);
});
这就是你昨天的问题,后缀上的mqtt怎么来的,就这里来的。代码拦截了/mqtt endpoints,用他自己中间件接管TTws的处理
至于2,4么那个是Tls类,官方也有Tls。(当然提供tls需要使用签名证书,这个你就自己看demo把)
不知道你这个问题是否已经解决, 如果还没有解决的话:如果读者机器上装有 Node.js 运行环境,可直接使用 npm 命令安装 MQTT.js。