mqttws31连接MQTTNET,属于下面哪一种协议

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

比如官方的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把)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^