У меня проблемы с API Google Cloud PubSub. Недавно я начал использовать Cloud PubSub для постановки сообщений в очередь для чат-сервера, над которым я работаю. Сообщения, поступающие из подписки PubSub, пересылаются пользователям с помощью библиотеки узлов socket.io. У меня нет проблем с настройкой - я запускаю свой сервер node.js, открываю пару окон браузера и могу без проблем болтать.
Однако я заметил, что часто после того, как сервер проработал несколько часов, он начинает выдавать следующую ошибку:
(node:2525) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
(node:2525) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
...
(node:2525) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1253): Error: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential...
Эта ошибка повторяется и повторяется (вы можете видеть увеличивающийся rejection id
в сообщении об ошибке), пока не остановится через несколько минут и все не возобновит работу. Пока я получаю сообщения об ошибках, я не могу отправлять сообщения через Cloud PubSub.
Вот код, который настраивает слушателя:
function listenForMessages(handler)
{
var pubsub = require('@google-cloud/pubsub')({
projectId: config.pubsub_project_id,
keyFilename: config.pubsub_keyfile
});
pubsub.subscribe(config.pubsub_topic, 'test-subscription', {autoAck: true}, function(err, subscription){
subscription.on('message', function(message) {
handler(message.data);
});
});
}
Учетные данные берутся из внешнего файла конфигурации - я почти уверен, что они в порядке, особенно с учетом того, что при первоначальном запуске сервера нет проблем с настройкой слушателя.
TL; DR: я начинаю периодически получать ошибку «неверные учетные данные» через несколько часов после запуска сервера узла, который использует Google Cloud PubSub для постановки сообщений в очередь.