【发布时间】:2021-12-05 14:11:40
【问题描述】:
我有一个每分钟运行一次的发布订阅云功能,用于向用户发送推送通知
export const sendScheduledNotifications = functions
.region(REGION)
.runWith({
timeoutSeconds: 540,
})
.pubsub.schedule("* * * * *")
.timeZone("Europe/Amsterdam")
.onRun(async (_) => {
const scheduledNotifications = await getNotificationsAfterDate(Date.now());
const promises = [];
if (scheduledNotifications.length > 0) {
const userIds = scheduledNotifications.map((notification) => notification.userId);
const users: AppUser[] = userIds.length == 0 ? [] : await userRepo.listUsers("id", "in", userIds);
for (const notification of scheduledNotifications) {
const user = users.find((user) => user.id === notification.userId)!;
promises.push(sendScheduledNotification(notification, user));
}
}
await Promise.all(promises);
});
但我在 firebase 控制台中不断收到以下错误
sendScheduledNotifications
Error: Error while making request: connect ECONNREFUSED XXX.XXX.XX.XX:XXX. Error code: ECONNREFUSED
at FirebaseAppError.FirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:44:28)
at FirebaseAppError.PrefixedFirebaseError [as constructor] (/workspace/node_modules/firebase-admin/lib/utils/error.js:90:28)
at new FirebaseAppError (/workspace/node_modules/firebase-admin/lib/utils/error.js:125:28)
at /workspace/node_modules/firebase-admin/lib/utils/api-request.js:211:19
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async sendScheduledNotification (/workspace/lib/index.js:1024:5)
at async Promise.all (index 0)
at async /workspace/lib/index.js:973:5
Al sendScheduledNotification 是这样的
sendMulticast(tokens: string[], notificationData: PushNotificationData): Promise<admin.messaging.BatchResponse> {
const data: admin.messaging.MulticastMessage = {
data: { data: JSON.stringify(notificationData) },
tokens: tokens,
android: {
priority: "high",
},
apns: {
payload: {
aps: {
contentAvailable: true,
},
},
headers: {
"apns-push-type": "background",
"apns-priority": "5",
"apns-topic": "io.flutter.plugins.firebase.messaging",
},
},
};
return this.messagingInstance.sendMulticast(data);
}
这可能是什么原因?
【问题讨论】:
-
这能回答你的问题吗? Firebase Cloud functions: ECONNREFUSED
标签: typescript firebase google-cloud-functions firebase-cloud-messaging