AWS Lambda 内的 Firebase 管理 NodeJS SDK - admin.messaging().send(msg) 超时

问题描述 投票:0回答:1

我在 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 发送通知。

我希望通知能够正确发送并且不会发生超时

欢迎任何帮助。

谢谢你,新年快乐。

node.js aws-lambda firebase-cloud-messaging firebase-admin
1个回答
0
投票

一旦捕获错误,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;
© www.soinside.com 2019 - 2024. All rights reserved.