Go Appengine 사이트에서 Apple 푸시 알림을 보내려고합니다. 다음과 같이 나는 apns2 library을 사용하고 있습니다 :Go Appengine 사이트에서 Apple 푸시 알림 보내기
로컬 개발 서버에서cert, err := certificate.FromPemFile(pemFile, "")
if err != nil {
log.Fatalf("cert error: %v", err)
}
client := apns2.NewClient(cert).Development()
n := &apns2.Notification{...}
if res, err := client.Push(n); err != nil { ... }
, 그것은 잘 작동; 그러나 생산에 나는보고있다 : 그것은 AppEngine에 보이는
Post https://api.development.push.apple.com/3/device/995aa87050518ca346f7254f3484d7d5c731ee93c35e3c359db9ddf95d035003:
dial tcp: lookup api.development.push.apple.com on [::1]:53: dial udp [::1]:53: socket: operation not permitted
가 사용할 것으로 예상 자신의 urlfetch library 아웃 바운드 요청을 보낼 때, 그래서 그 사용하는 기본 HTTPClient
을 설정하려고 그러나
client.HTTPClient = urlfetch.Client(ctx)
을 애플 서버에서 응답이 지금
@@?HTTP/2 client preface string missing or corrupt. Hex dump for received bytes: 504f5354202f332f6465766963652f393935616138373035
나는 애플 알림 require HTTP/2를 밀어하는 문제는 생각 하지만 urlfetch는 HTTP/1.1 만 구현합니다.
어떻게이 문제를 해결할 수 있습니까? appengine 앱이 HTTP/2 요청을 보내는 방법이 있습니까?
나는''http2.Transport']를 결합하여 [''http.RoundTripper'] (https://golang.org/pkg/net/http/#RoundTripper)를 구현해야 할 필요가 있다고 생각합니다. (https://github.com/golang/net/blob/master/http2/transport.go#L299) 및 ['urlfetch.Transport'] (https://github.com/golang/appengine/blob/master/) urlfetch/urlfetch.go # L127) –