Comed/bayeux客户机+;salesforce流式API问题

Comed/bayeux客户机+;salesforce流式API问题,salesforce,cometd,bayeux,Salesforce,Cometd,Bayeux,我有我的.NET客户端(windows服务),它订阅Salesforce流式API推送主题 我可以连接到Salesforce,并可以将通知发送给我的客户。一切正常,但: 如果在一段时间(可能2小时)后,如果我更新了对象,则当频道上没有活动(Salesforce对象没有更改)时,我不会收到Salesforce的任何通知 我试着把监听器放到日志中,它在下面的日志中写道 {“clientId”:“f6xo67iet55w5j7ek6ldw72nfc6”,“频道”:“/meta/connect”,“id

我有我的.NET客户端(windows服务),它订阅Salesforce流式API推送主题

我可以连接到Salesforce,并可以将通知发送给我的客户。一切正常,但:

如果在一段时间(可能2小时)后,如果我更新了对象,则当频道上没有活动(Salesforce对象没有更改)时,我不会收到Salesforce的任何通知

我试着把监听器放到日志中,它在下面的日志中写道

{“clientId”:“f6xo67iet55w5j7ek6ldw72nfc6”,“频道”:“/meta/connect”,“id”:“82”,“successful”:true}2018年5月15日8:12:28下午

{“通知”:{“间隔”:0,“重新连接”:“握手”},“通道”:“/meta/connect”,“id”:“83”,“错误”:“403::未知客户端”,“成功”:false}5/15/2018 8:12:28 PM

{“clientId”:“hbx1v2cxebbeder11s99dqkxmasre”,“advice”:{“interval”:0,“timeout”:110000,“reconnect”:“retry”},“channel”:“/meta/connect”,“id”:“85”,“successful”:true} 2018年5月15日下午8:12:29

{“clientId”:“hbx1v2cxebbeder11s99dqkxmasre”,“channel”:“/meta/connect”,“id”:“86”,“successful”:true} 2018年5月15日下午8:14:20

{“clientId”:“hbx1v2cxebbeder11s99dqkxmasre”,“channel”:“/meta/connect”,“id”:“87”,“successful”:true} 2018年5月15日下午8:16:10

所以根据日志,有时我会得到“403::Unknown client”,但紧接着它会再次显示channel successful

但正如我在2小时后尝试更新Salesforce对象时所说的(根据日志,连接成功),我没有收到任何通知

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

在我的客户机中,我使用Comed from- 对于推送主题订阅,我使用此-


任何帮助都将不胜感激。

好的,我终于可以让它工作了。以下是变化

  • 每当有“403::Unknown client”时,CometD就会尝试重新连接(CometD的默认行为)
  • 一旦重新连接,所有频道订阅都将被删除(Comet就是这么做的,这是默认行为)
  • 因此,解决方案是,我们总是需要在“元/握手”回调中进行通道订阅。这就是Comed.org也建议做的事情
  • 这将确保每次握手时通道都是同步的
  • 完成此操作后,我的salesforce同步工作正常,即使我们没有更新salesforce中的任何对象,然后在2天后重试,它仍然可以工作

  • 有人能解释一下吗?好消息!您正在为此使用.net Comed实现吗?谢谢@是的。如上所述,我在Bayeux客户机中创建了一些事件来推送错误。然后,我从我的应用程序中检测错误发生的时间,并创建一个新的客户端、握手和订阅事件。这似乎奏效了!谢谢@古鲁帕萨德目前我面临着同样的问题——是否有可能发送一份样品code@Thennarasan-很抱歉,很久没有看到这一点。如果您仍然需要该信息,可以向您发送代码。让我知道。