Podio JS: не удается успешно подписаться на push-сервис

#javascript #podio

#javascript #podio

Вопрос:

Что я хочу сделать

Я хочу подписаться на push-уведомления, уведомляющие меня, когда я вношу изменения в элементы в Podio.

Что я сделал для достижения этого

Я использую библиотеку Podio JS, прочитал документацию и прошел через подробный пример. Я в соответствии с инструкциями:

  • успешно прошла аутентификацию с помощью PODIO api; и
  • успешно выполнен podio.request вызов (прием responseBody с push свойством)

Следующий шаг в моем коде заключается в следующем:

 var subscribe = getItem.then (function (responseBody){ 
    return podio.push(responseBody.push).subscribe(callback);
});

var notification = subscribe.then (function () { // never gets here!
    console.log ('subscribed');
});
  

Что не работает

Код никогда не попадает в notification часть и, следовательно, не выполняется console.log ('subscribed') . Обратный вызов, который я передаю podio.push(responseBody.push).subscribe(callback) , никогда не вызывается, даже если я вношу изменения в соответствующий элемент в моей учетной записи Podio.

Когда я запускаю console.log(subscribe) с интервалом в 1000 мс, вывод выполняется и остается:

 lib$es6$promise$promise$$Promise {
  _id: 2,
  _state: undefined,
  _result: undefined,
  _subscribers: 
   [ lib$es6$promise$promise$$Promise {
       _id: 3,
       _state: undefined,
       _result: undefined,
       _subscribers: [] },
     [Function],
     undefined ],
  _onerror: null }
  

В чем мой вопрос

Я был бы очень признателен за помощь в определении того, почему push-сервис не работает, хотя я — как я это вижу — сделал точно так, как указано в документации.

Заранее благодарю вас!

Комментарии:

1. В качестве эксперимента, можете ли вы попробовать и проверить, сработает ли это, если изменения будут внесены другим человеком. Я имею в виду эту часть even though I make changes to the relevant item in my Podio account. . Можете ли вы попросить кого-нибудь другого внести эти изменения (или сделать их из другой учетной записи)?

2. @Pavlo: Я уже пробовал это, и это ничего не меняет. Результат тот же. Мне интересно, должен ли я каким-то образом сам подключить Faye к серверу. Но в инструкциях, касающихся Podio JS, ничего не упоминается в этом отношении …. ?

Ответ №1:

Подписка на push-сервисы была фактически нарушена в podio-js , и это было исправлено в версии 1.6.0. (Смотрите Этот PR, если вас интересуют изменения в коде)

Пожалуйста, обновитесь до последней версии podio-js , и все будет готово.

Небольшой пример (с использованием нотации ES6)

 // assuming you already have an authenticated SDK in the variable podio

const onNotificationReceived = (message) => {
  console.log(message);
};

const subscribeToPushNotifications = (itemId) => {

  podio.request('GET', `/item/${itemId}`).then((data) => {
    podio.push(data.push).subscribe(this.onNotificationReceived)
      .then(() => console.log(`All is well, we've been subscribed!`));
  }).catch(err => { 
    throw new Error(err) 
  });

};

// Whatever item you want to receive notifications about
const itemId = 99999999;

subscribeToPushNotifications(itemId);
  

Комментарии:

1. Возможно ли подписаться на приложение, чтобы получать уведомления от каждого элемента в приложении вместо подписки на каждый элемент?

2. Вы не можете подписаться на приложение, но вы можете подписаться на / user / status , который, как только вы перейдете в приложение, будет выдавать вам все уведомления о созданных / обновленных элементах. Затем вам придется отфильтровать тот, который не связан с интересующим вас приложением (например, другие приложения, уведомления, сообщения чата, …)