课程章节介绍
让我们来聊聊如何协商和维护连接,特别是在使用Salesforce的流API时。这个过程听起来可能有点技术性,但我会尽量用简单的语言来解释。
首先,想象一下你有一个内部的Visualforce页面。在这种情况下,你不需要登录请求,因为页面已经在Salesforce环境中运行了。但是,如果你是在外部系统或者需要与Salesforce进行通信的客户端,那么就需要一个登录请求来开始这个过程。
1. ,客户端的登录请求,:这是客户端向Salesforce发送的一个请求,用来开始通信。虽然协议本身不需要登录请求,但客户端在握手过程中必须发送一个会话ID,这样才能连接到流API。
2. ,客户握手,:握手是客户端和服务器之间的一种确认方式,用来显示双方支持的传输方式。这个步骤很重要,因为它确保了双方都能理解和支持接下来的通信方式。但是,握手响应并不总是意味着握手已经被接受。为了确保握手成功,你可以在调用`.BayeuxClient.handshake()`之前添加一个消息监听函数,或者使用CometD 2的同步功能来等待握手完成。
3. ,客户端请求连接,:一旦握手成功,CometD会发送一个连接请求来开始长轮询。长轮询是一种技术,允许服务器在有新数据时立即推送给客户端,而不是等待客户端请求。你可以通过监视元通道来查看轮询的状态。
4. ,服务器发送消息,:在定义的非活动时间段后,服务器会向客户端发送消息。这是为了保持连接的活跃状态,确保客户端和服务器之间的通信不会中断。
5. ,客户端响应,:客户端在收到服务器的消息后,会立即响应,以保持连接打开。这种持续的通信确保了连接的稳定性和实时性。
如果没有订阅任何特定的数据流,这种模式会一直持续,直到服务器达到其连接超时。这意味着连接会保持打开状态,直到服务器决定关闭它,通常是因为长时间没有活动。
希望这个解释能帮助你理解如何协商和维护连接。如果有任何疑问,随时提问!