AWS Lambda中的Firebase Admin NodeJS SDK- admin.messaging().send(msg)超时

kx5bkwkv  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(160)

我在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发送通知。
我希望通知发送正确,并且不会发生超时
任何帮助都是受欢迎的。
谢谢你,新年快乐。

68bkxrlz

68bkxrlz1#

一旦捕获到错误,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;

字符串

相关问题