我在项目中使用指定修订版的github.com/sideshow/apns2来发送IOS推送通知。 go 1.7.4 位于docker容器内,我在那里编译了应用程序并将二进制文件拉到了主机上。当我在主机上运行二进制文件时,它会抛出下一个错误:
Error Message: Post https://api.push.apple.com/3/device/{device_token}: dial tcp: lookup api.push.apple.com on 127.0.1.1:53: read udp 127.0.0.1:33891->127.0.1.1:53: i/o timeout
但是在docker内部运行可以正常工作。
这是代码的一部分:
import (
"os"
"strings"
apns "github.com/sideshow/apns2"
"github.com/sideshow/apns2/token"
)
var ApnsClient *apns.Client
authKey, err := token.AuthKeyFromBytes([]byte(strings.Replace(os.Getenv("APNS_AUTH_KEY"), "\\n", "\n", -1)))
if err != nil {
return err
}
Token := &token.Token{
AuthKey: authKey,
KeyID: os.Getenv("APNS_KEY_ID"),
TeamID: os.Getenv("APNS_TEAM_ID"),
}
if os.Getenv("APNS_PRODUCTION") == "1" {
ApnsClient = apns.NewTokenClient(Token).Production()
} else {
ApnsClient = apns.NewTokenClient(Token).Development()
}
notification := &apns.Notification{
Payload: {payload},
Topic: {bundle id},
DeviceToken: {device_token}
}
res, err := ApnsClient.Push(notification)
res 中的HTTP状态为200
任何想法如何解决这个问题?
答案 0 :(得分:0)
您的DNS解析似乎已疯狂地编译到您的可执行文件中:127.0.0.1:33891-> 127.0.1.1:53
这里看到的是docker与本地host-dns服务器的端口绑定。这在主机上不起作用,但将这个“路径”编译到go-executable中也没有意义。
可能你正在编译一个静态连接字符串到APP中,为了连接到DNS服务器,我真的不能在这里猜测。