一个信号创建通知 REST API 有时会失败

One signal create notification REST API fails sometimes

我正在使用 oneSignal 推送通知 node.js。我正在使用创建通知 api 向用户发送通知,但我不知道为什么它有时会起作用,有时会出现超时错误

sendNotificationToUser(data) {
    try {
        var notificationData = {}
        notificationData.app_id = oneSignalAppId
        notificationData.headings = {
            en: "Heading"
        }
        notificationData.contents = {
            en: data.message
        }
        notificationData.include_player_ids = [data.deviceId]

        var headers = {
            "Content-Type": "application/json; charset=utf-8"
        }
        var options = {
            host: "onesignal.com",
            port: 443,
            path: "/api/v1/notifications",
            method: "POST",
            headers: headers
        }

        var https = require("https")
        var req = https.request(options, function (res) {
            res.on("data", function (data1) {
                console.log("Response:")
                console.log(JSON.parse(data1))
            })
        })

        req.on("error", function (e) {
            console.log("ERROR:")
            console.log(e)
        })

        req.write(JSON.stringify(notificationData))
        req.end()
    } catch (err) {
        console.log("err in notification", err)
    }
}

这个 api 有 50% 的时间和 50% 的时间响应超时错误,即使所有输入都是正确的

ERROR:
 { 
    Error: connect ETIMEDOUT 104.18.225.52:443
          at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
          errno: 'ETIMEDOUT',
          code: 'ETIMEDOUT',
          syscall: 'connect',
          address: '104.18.225.52',
          port: 443
}

一个简单的解决方案是直接点击工作 ip,你可以通过包括 主持人:'onesignal.con' 在 headers 和 主机:选项中的“104.18.226.52”

这解决了我的问题

了解更多关于如何在 https 请求中使用主机指定 ip 去这里 HTTPS request, specifying hostname and specific IP address