我正在开发一个简单的网络服务器,它将推送通知发送到我的 iPhone 应用程序。 我尝试过使用现有的 Python 包,但它们都遇到了这个问题:
当发送无效 token 时,Apple 将发回错误消息并关闭套接字。我需要发送大量推送通知,但如果其中一个有无效 token ,其余的将不会发送给 Apple。
目前,我的代码如下所示:
for m in messages:
socket.send(m)
但是当第一条消息的 token 无效时,Apple 在收到第一条消息后立即关闭套接字,套接字仍然会发送所有消息而不会出现任何错误。
我无法在每条超时消息后执行recv
,因为这会花费太长时间。我该怎么做才能知道套接字何时关闭并打开一个新套接字?
最佳答案
如果另一端的套接字已关闭,则其上的 recv
应返回 0
或导致错误。
您可以查看send
发送的字节数。
更新:您可能想read here另一种可能性是监视套接字连接是否仍然存在。
<小时/>Update-1:另一种方法可能是在有问题的套接字上与写入操作并行运行一个不断读取的线程......正如您提到的:时间是您的限制。
关于python - 如何检测关闭的套接字或实现 Apple 推送通知提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468528/