Cometd / bayeux клиент + проблема потокового API Salesforce - PullRequest
0 голосов
/ 16 мая 2018

У меня есть клиент .net (служба Windows), который подписан на рассылку потокового API Salesforce.

Я могу подключиться к Salesforce и получать уведомления от моего клиента. все работает нормально. но

когда по каналу нет активности (без изменений для объекта salesforce) через некоторое время (возможно, через 2 часа), если я обновляю объект, я не получаю никаких уведомлений от salesforce. Я пытался поставить слушателей, чтобы войти и в журналах это говорит ниже

{"clientId": "f6xo67iet55w5j7ek6ldw72nfc6", "channel": "/ meta / connect", "id": "82", "success": true} 15.05.2008 20:12:28 PM

{ "совет": { "Интервал": 0, "восстановить": "рукопожатие"}, "канал": "/ мета / подключения", "идентификатор": "83", "ошибка": "403: : Неизвестный клиент "," успешно ": false} 15.05.2008 20:12:28

{ "ClientId": "hbx1v2cxebbeder11s99dqkxmasre", "совет": { "Интервал": 0, "тайм-аут": 110000, "восстановить": "повторить"}, "канал": "/ мета / подключения",» идентификатор ":" 85" , "успешно": правда} 15.05.08 20:12:29

{ "ClientId": "hbx1v2cxebbeder11s99dqkxmasre", "канал": "/ мета / подключения", "идентификатор": "86", "успешно": правда} 15.05.2008 20:14:20

{ "ClientId": "hbx1v2cxebbeder11s99dqkxmasre", "канал": "/ мета / подключения", "идентификатор": "87", "успешно": правда} 15.05.2008 20:16:10

так, согласно журналу, иногда я получаю «403 :: Неизвестный клиент», но сразу после этого он снова говорит, что канал успешен. Но, как я уже сказал, когда я пытаюсь обновить объект sf через 2 часа (согласно журналу, соединение установлено успешно), я не получаю никаких уведомлений.

Если я перезапущу службу Windows и снова получу уведомление.

В моем клиенте я использую Cometd от - https://github.com/couchand/CometD.NET/tree/headers и для подписки на push-темы я использую это - https://github.com/foluis/Salesforce_PushTopics

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 22 мая 2018

Хорошо, наконец-то я смог заставить это работать. Ниже приведены изменения

  1. Всякий раз, когда существует «403 :: Неизвестный клиент», CometD пытается восстановить соединение (поведение по умолчанию для кометда)
  2. После повторного подключения все подписки на каналы будут удалены (что и делает Cometd, это поведение по умолчанию)
  3. Итак, решение заключается в том, что нам всегда нужно делать подписку на канал внутри обратного вызова «meta / Handshake». Это то, что даже cometd.org также рекомендует делать.
  4. Это обеспечит синхронизацию каналов при каждом рукопожатии
  5. После этого моя синхронизация salesforce работала нормально, даже если мы не обновили какой-либо объект из salesforce, а затем попробовали через 2 дня, он все еще работает.
...