#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 , который, как только вы перейдете в приложение, будет выдавать вам все уведомления о созданных / обновленных элементах. Затем вам придется отфильтровать тот, который не связан с интересующим вас приложением (например, другие приложения, уведомления, сообщения чата, …)