- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 Java 中 Apple 推送通知的服务器端开发。我正在使用增强格式,以便检测失败的消息并重新发送错误消息之后的消息。我知道 Apple 不保证推送通知的发送,但我希望能够知道 Apple 是否收到了我的消息以及其中是否包含任何错误。
我注意到,当我尝试向 Apple 发送无效消息(无效设备 token 、负载过大等)时,我可以在套接字关闭之前再发送几条消息。当套接字关闭时,从Apple读取错误代码已经太晚了,所以我不知道哪条消息是坏消息(或者即使有坏消息,因为Apple说连接可能偶尔会关闭,即使没有错误)。
我在 JavaPN 源代码中看到的处理此问题的方法是在发送每条消息(或一组消息)后立即读取 Apple 的响应。如果频繁执行,则从套接字读取,并等待超时,以防没有任何内容可读取。如果您不经常发送推送通知,这是可以接受的。
如果您尝试以高频率发送大量通知(假设每秒数百个),则您无法在每条消息后停下来等待 Apple 的响应(即使您只等待响应 20 毫秒) ,这会将您限制为每秒 50 条消息,并且您无法知道 Apple 需要多长时间才能写入错误响应,因此短暂的等待可能还不够)。如果您在每条消息后不停下来阅读可能出现的错误,则在向 Apple 发送消息期间,您的连接可能会被关闭,在这种情况下,您将无法获取导致连接关闭的消息的 ID .
我正在考虑的另一种方法是在单独的线程中执行读取和写入。这样我就有更好的机会从 Apple 获取错误消息(在连接关闭之前),而不会影响向 Apple 发送消息的速度。这种方法在编程上更加复杂,并且由于我的服务器预计将 APN 发送到多个 iOS 应用程序,每个应用程序都需要自己的套接字和读取器/写入器线程,这将使我需要的线程数增加两倍。
上述 APN 服务器的所有行为都是在尝试向 Apple 沙箱服务器发送推送通知时了解到的。我不确定 Apple 生产服务器的行为是否更好,并且我不确定在生产服务器上执行测试是个好主意。
我的问题 - 有没有一种方法可以在关闭连接之前可靠地读取 Alpha 的错误响应,而不牺牲性能?在服务器关闭套接字后是否可以以某种方式从套接字读取输入?
最佳答案
我也遇到了和你一样的问题。我尝试了两种方法,但在关闭连接之前,它们都无法可靠地读取 Apple 的错误响应:
关于java - 如何在 Java 服务器中可靠且高效地读取来自 Apple Push Notifications Server 的所有错误响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059865/
我是一名优秀的程序员,十分优秀!