我在 AWS Lambda 函数中使用以下代码,代码工作正常,发生的情况是查看服务器日志,send() 函数通常会超时(大于 Lambda 的 60 秒持续时间) .
当达到超时时,lambda 会重试。
在本地使用此流程,通知发送成功,通常不会超过 1 秒。
有谁知道这个问题的原因是什么? 或者如何解决?
export async function sendEnquiryMessage(messagingEvent: MessagingEvent, fcmToken: string) {
let content = {
title: `new Message from ABC`,
body: `'${messagingEvent.message?.text ?? ""}' `,
};
console.log("sending a message to FCM: ", fcmToken);
const message = {
notification: {
body: content.body,
title: content.title,
},
data: {
clickaction: 'FLUTTER_NOTIFICATION_CLICK',
id: '1',
status: 'done',
messagingEvent: JSON.stringify(messagingEvent),
},
apns: {
payload: {
aps: {
'mutable-content': 1,
'content-available': 1
}
}
},
token: fcmToken,
};
console.log("MESSAGE TO SEND: ", JSON.stringify(message));
try {
const messageId = await admin.messaging().send(message);
console.log("MESSAGE SENT messageId ID was : ", messageId);
} catch (e) {
console.error('Error FCM message:', e);
}
return true;
我正在测试通过在 AWS Lambda 函数中实现的 FCM 发送通知。
我希望通知能够正确发送并且不会发生超时。
欢迎任何帮助。
谢谢你,新年快乐。
一旦捕获错误,console.error() 就需要字符串作为输入。
对错误变量使用 .toString() 方法将其转换为字符串表示形式。
参考:https://nodejs.org/api/console.html#consoleerrordata-args
export async function sendEnquiryMessage(messagingEvent: MessagingEvent, fcmToken: string) {
let content = {
title: `new Message from ABC`,
body: `'${messagingEvent.message?.text ?? ""}' `,
};
console.log("sending a message to FCM: ", fcmToken);
const message = {
notification: {
body: content.body,
title: content.title,
},
data: {
clickaction: 'FLUTTER_NOTIFICATION_CLICK',
id: '1',
status: 'done',
messagingEvent: JSON.stringify(messagingEvent),
},
apns: {
payload: {
aps: {
'mutable-content': 1,
'content-available': 1
}
}
},
token: fcmToken,
};
console.log("MESSAGE TO SEND: ", JSON.stringify(message));
try {
const messageId = await admin.messaging().send(message);
console.log("MESSAGE SENT messageId ID was : ", messageId);
} catch (e) {
console.error('Error FCM message:', e.toString());
}
return true;