我们可以在 MQTT 架构中复制 HTTP SESSION 的想法吗?
Can we replicate a HTTP SESSION idea in a MQTT architecture?
粗略地说,HTTP SESSION 是服务器在检查用户凭据后发送给客户端(前浏览器)的一种秘密。这个秘密通过所有后续的 HTTP 请求传递,并将识别用户。这很重要,因为 HTTP 是无状态的 - source.
现在我有一个场景,其中机器和 AWS-IoT 核心内的 MQTT 代理之间存在通信。机器显示一些屏幕。第一个屏幕是登录名和密码。
这里的想法是,在第一个屏幕之后,如果凭据得到验证,服务器应该生成一个“会话”,我们应该跨屏幕页面发送这个“会话”。机器应在所有后续消息中发送此“SESSION”,并且服务器必须在执行任何操作之前验证此字符串。这是电气工程团队创建的请求。
我,在软件开发方面,这似乎没有意义,因为在 AWS IoT-Core 代理 (MQTT) 中连接的所有机器都必须使用证书 - 已经进行了验证。
除此之外,MQTT 代理还提供 SESSION 持久性功能。我知道代理端的会话(QoS 0/1)与消息传递和接收的信心有关。
也就是说,是否可以使用 MQTT 中的会话持久性来实现类似于 HTTP 中的会话的行为,以便跨设备屏幕识别用户?如果是怎么办?
不,HTTP 会话概念与 MQTT 会话没有任何相似之处。 MQTT 客户端会话中唯一保存的是订阅主题列表,HTTP 会话可以保存任意数据。
此外,MQTT 消息在传递给订阅者时不包含有关用户甚至发布消息的客户端的任何信息,唯一存在的信息是消息有效负载和消息发布到的主题。
虽然 MQTTv5 添加了包含更多元数据的选项,但尝试添加用户会话的概念就像试图让方钉适合圆孔。
如果您想将某些东西作为消息有效负载的一部分来实现,那完全取决于您,但这与传输协议无关。
粗略地说,HTTP SESSION 是服务器在检查用户凭据后发送给客户端(前浏览器)的一种秘密。这个秘密通过所有后续的 HTTP 请求传递,并将识别用户。这很重要,因为 HTTP 是无状态的 - source.
现在我有一个场景,其中机器和 AWS-IoT 核心内的 MQTT 代理之间存在通信。机器显示一些屏幕。第一个屏幕是登录名和密码。
这里的想法是,在第一个屏幕之后,如果凭据得到验证,服务器应该生成一个“会话”,我们应该跨屏幕页面发送这个“会话”。机器应在所有后续消息中发送此“SESSION”,并且服务器必须在执行任何操作之前验证此字符串。这是电气工程团队创建的请求。
我,在软件开发方面,这似乎没有意义,因为在 AWS IoT-Core 代理 (MQTT) 中连接的所有机器都必须使用证书 - 已经进行了验证。
除此之外,MQTT 代理还提供 SESSION 持久性功能。我知道代理端的会话(QoS 0/1)与消息传递和接收的信心有关。
也就是说,是否可以使用 MQTT 中的会话持久性来实现类似于 HTTP 中的会话的行为,以便跨设备屏幕识别用户?如果是怎么办?
不,HTTP 会话概念与 MQTT 会话没有任何相似之处。 MQTT 客户端会话中唯一保存的是订阅主题列表,HTTP 会话可以保存任意数据。
此外,MQTT 消息在传递给订阅者时不包含有关用户甚至发布消息的客户端的任何信息,唯一存在的信息是消息有效负载和消息发布到的主题。
虽然 MQTTv5 添加了包含更多元数据的选项,但尝试添加用户会话的概念就像试图让方钉适合圆孔。
如果您想将某些东西作为消息有效负载的一部分来实现,那完全取决于您,但这与传输协议无关。