Cometd / bayeux客户端+ salesforce流API问题

时间:2018-05-16 07:49:52

标签: salesforce cometd bayeux

我的.net客户端(Windows服务)订阅了Salesforce流API推送主题。

我可以连接到Salesforce并可以向我的客户端发送通知。一切都很好。但

如果我在更新对象后没有收到来自salesforce的任何通知,那么在一段时间(可能是2小时)之后通道上没有任何活动(对salesforce对象没有更改)。 我曾尝试将监听器放在日志中,并在下面的日志中说明

  

{"的clientId":" f6xo67iet55w5j7ek6ldw72nfc6""信道":" /元/连接"" ID&#34 ;:" 82","成功":true} 5/15/2018 8:12:28 PM

     

{"建议" {"间隔":0,"重新连接":"握手"}"信道&# 34;:" /间/连接"" ID":" 83""错误":" 403 ::未知客户","成功":假} 5/15/2018 8:12:28 PM

     

{"的clientId":" hbx1v2cxebbeder11s99dqkxmasre""建议" {"间隔":0,"超时&#34 ;:110000"重新连接":"重试"}"信道":" /间/连接"" ID&# 34;:" 85""成功":真}   5/15/2018 8:12:29 PM

     

{"的clientId":" hbx1v2cxebbeder11s99dqkxmasre""信道":" /元/连接"" ID&#34 ;:" 86""成功":真}   5/15/2018 8:14:20 PM

     

{"的clientId":" hbx1v2cxebbeder11s99dqkxmasre""信道":" /元/连接"" ID&#34 ;:" 87""成功":真}   5/15/2018 8:16:10 PM

所以根据日志,有时我会得到" 403 ::未知的客户端"但在此之后,它再次表示频道成功。 但正如我在2小时后尝试更新sf对象时说的那样(根据日志,连接成功)我没有收到任何通知。

如果我重新启动Windows服务并再次收到通知。

在我的客户端使用来自 - https://github.com/couchand/CometD.NET/tree/headers 对于推送主题订阅我正在使用它 - https://github.com/foluis/Salesforce_PushTopics

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

好吧最后我能够让这个工作。以下是更改

  1. 每当有一个" 403 ::未知客户端"时,CometD会尝试重新连接(cometd的默认行为)
  2. 一旦重新连接,将删除所有频道订阅(这是cometd所做的,它是默认行为)
  3. 所以,解决方案是,我们总是需要在内部进行频道订阅" meta / Handshake"打回来。即使是cometd.org也建议这样做。
  4. 这将确保在每个握手频道上同步
  5. 执行此操作后,我的salesforce同步工作正常,即使我们不从salesforce更新任何对象,然后在2天后尝试仍然有效。