salesforce - 如何在与 Salesforce Platform EventBus 通信的 cometd 客户端中刷新 token ?

标签 salesforce cometd

我正在使用 cometd 来监听 Salesforce 中生成的平台事件。我的 cometd 客户端配置代码如下所示

this.client.configure({
      url: `${this.org.instance_url}/cometd/46.0`,
      requestHeaders: {
        Authorization: `Bearer ${salesforceToken}`
      },
      appendMessageTypeToURL: false
    });

其中 salesforceToken 是使用刷新 token 获取的。这一切在一段时间内都可以正常工作,但如果在相当长的一段时间内没有任何事件(据传是 6-24 小时之间的任何时间),那么我的客户似乎过期并且没有收到任何事件。如果我刷新 token 并重新启动我的监听器,事情就会重新开始。

除了编写某种计时器以在不活动后每隔几个小时重新启动进程之外,还有其他方法可以使监听器保持事件状态吗?

最佳答案

您不必再次刷新 token

只要 channel 上没有事件,服务器就会在特定时间后关闭连接。

此时客户端会收到一个403(未知客户端)状态码,客户端必须在 110 秒内再次握手。

默认情况下,CometD 会尝试在没有任何用户交互的情况下重新连接,如果客户端未在预期时间内重新连接,服务器会删除客户端的 CometD session 。

一旦连接重新连接,所有 channel 订阅将被 ComedD 删除,我们必须再次订阅 channel 才能接收事件。

为此,我们必须使用meta/Handshake 回调重新订阅 channel 。

关于salesforce - 如何在与 Salesforce Platform EventBus 通信的 cometd 客户端中刷新 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59304320/

相关文章:

java - 将自定义 keystore 与 Jetty 的 WebSocketClientFactory 结合使用

javascript - 传递给 cometd.subscribe() 的参数

python - 来自 Python 的 SOQL IN 查询

javascript - Lightning 组件,检索 Controller 中的查找记录值

python - 销售人员 API : Save email communication

java - 处理 Cometd 异常

javascript - 如何在 cometd 中处理向 javascript 客户端广播动态列表

java - 如何在 Apex Restful 服务中首先获取 access_token 以从外部调用 GET/POST 方法?

java - 使用合作伙伴 WSDL 连接到 SFDC 的测试实例

java - 将 cometD 的奥尔特与 tomcat 一起使用