Java Apple推送通知服务(APNS):反馈服务响应缺少字节?

Java Apple推送通知服务(APNS):反馈服务响应缺少字节?,java,ruby,sockets,apple-push-notifications,push-notification,Java,Ruby,Sockets,Apple Push Notifications,Push Notification,我正在用Ruby编写一个推送通知系统。使用增强接口发送通知工作正常,但使用反馈服务根本不起作用 我自己编写代码从套接字读取,类似这样: context = OpenSSL::SSL::SSLContext.new context.cert = OpenSSL::X509::Certificate.new(File.read(pem_path)) context.key = OpenSSL::PKey::RSA.new(File.read(rsa_p

我正在用Ruby编写一个推送通知系统。使用增强接口发送通知工作正常,但使用反馈服务根本不起作用

我自己编写代码从套接字读取,类似这样:

      context      = OpenSSL::SSL::SSLContext.new
      context.cert = OpenSSL::X509::Certificate.new(File.read(pem_path))
      context.key  = OpenSSL::PKey::RSA.new(File.read(rsa_path))
      @socket = TCPSocket.new(host, port)
      @ssl    = OpenSSL::SSL::SSLSocket.new(@socket, context)
      @ssl.connect
      @socket.gets #read(38) has the same effect FWIW
但是APNS反馈服务只返回37个字节,而不是预期的38个字节,并且正如预期的那样,包被弄乱了

我可以使用Ruby复制错误(并为他们打开一张罚单)

我已将从APNS反馈服务收到的所有信息保存到一个文件中,以下是我在尝试检查字节时得到的信息:

ruby-1.9.2-p290 :035 > while b = f.readbyte
ruby-1.9.2-p290 :036?>   puts b
ruby-1.9.2-p290 :037?>   end
21
3
1
0
32
23
35
236
232
217
53
172
143
54
130
39
157
247
205
233
231
245
140
111
104
199
214
159
60
107
169
175
42
172
57
31
160
正如您所看到的,数组被关闭了1,应该如下所示:

任何人都有类似的问题,或者可以看出我做错了什么

谢谢

编辑@19/2011:

这似乎是Ruby套接字的一个问题。使用以下Clojure核心返回相同应用程序、证书等的预期结果

(def tokens (. (.. (APNS/newService) 
                   (withCert "/Users/pcalcado/blah.p12" "blah") 
                   withProductionDestination 
                   build) 
               getInactiveDevices))

我看不出Ruby有什么特别之处,也看不出我可能做错了什么。我不介意在这个系统中使用Clojure,但现在我已经用Ruby on MRI编写并运行了除了反馈之外的所有东西=/

我问自己。。。我们是否可能必须从@ssl而不是@socket读取数据? 对不起,我对Ruby编程有点陌生:)

编辑: 我向您确认,问题是您需要从SSL套接字读取数据
看看这个提交:

看看Josh Priddle写的。我成功地使用了它,并且相信它的核心功能,包括从苹果检索反馈,能够正常工作。如果没有其他原因的话,这是另一个代码示例——在Ruby中——供您检查。

Spot on。当我第一次看到你的评论时,我改为阅读SSL,但在圣诞节之前没有时间真正地把它写出来,现在就尝试了,它可以工作了。谢谢,伙计。