XMPP:为什么我们要发送多个请求来为一个连接打开一个流?

XMPP:为什么我们要发送多个请求来为一个连接打开一个流?,xmpp,Xmpp,我一直在学习一些教程,最好的是 在步骤6中,它说我需要在授权后再次打开流?有什么原因吗 溪流是自动关闭的吗?如果我只是验证了流,为什么它需要关闭并重新打开?我是否需要再次递归地从步骤1开始,或者需要多久请求重新打开一次?我需要验证这个新流吗 作为一个XMPP初学者,为什么要这样做:新建流->授权它->新建流->现在不确定什么,也许再授权一次 作为一名XMPP初学者,您可能会得到一个正确的答案:) 当您准备深入研究时,必须阅读官方的XMPP规范:,以及 此处描述的初始流“协商”—— 简而言之,不需

我一直在学习一些教程,最好的是

在步骤6中,它说我需要在授权后再次打开流?有什么原因吗

溪流是自动关闭的吗?如果我只是验证了流,为什么它需要关闭并重新打开?我是否需要再次递归地从步骤1开始,或者需要多久请求重新打开一次?我需要验证这个新流吗


作为一个XMPP初学者,为什么要这样做:新建流->授权它->新建流->现在不确定什么,也许再授权一次

作为一名XMPP初学者,您可能会得到一个正确的答案:)

当您准备深入研究时,必须阅读官方的XMPP规范:,以及

此处描述的初始流“协商”——
简而言之,不需要,只有当您的参与方在新流的开头(
)中“公布”元素时,您才需要进行身份验证,大多数情况下只需执行一次。

授权后流功能会发生更改。正如它们在TLS握手后发生变化一样。流特征的改变总是意味着有一个“新”流正在进行。这就是流“重新打开”的原因

如果您查看,您会发现服务器(可以)首先(仅)宣布(仅)
starttls
为流功能(9.1.1步骤3):

S: <stream:features>
     <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'>
       <required/>
     </starttls>
   </stream:features>
S: <stream:features>
     <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
       <mechanism>SCRAM-SHA-1-PLUS</mechanism>
       <mechanism>SCRAM-SHA-1</mechanism>
       <mechanism>PLAIN</mechanism>
     </mechanisms>
   </stream:features>
<stream:features>
    <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/>
</stream:features>