私のiPhoneアプリケーションにプッシュ通知を送信する単純なWebサーバーで作業しています。 私は既存のPythonパッケージを使用しようとしましたが、すべてこの問題を抱えています:閉じたソケットを検出する方法、またはAppleプッシュ通知プロバイダを実装する方法
無効なトークンが送信されると、Appleはエラーメッセージを返してソケットを閉じます。多数のプッシュ通知を送信する必要がありますが、そのうちの1つが無効なトークンを持っている場合、残りの部分はAppleに配信されません。
ので、現在、私のコードは次のようなものになります。
for m in messages:
socket.send(m)
をしかし、メッセージの最初に無効なトークンを持っているので、Appleは、すぐにそれが最初のメッセージを受信するとソケットを閉じたときに、ソケットはまだすべての送信メッセージはエラーなし。
タイムアウトのある各メッセージの後にrecv
を実行する余裕はありません。時間がかかりすぎるためです。ソケットが閉じられたときを知って新しいソケットを開くにはどうすればいいですか?
これは不正な形式のパケットを送信したかどうかを検出する良い方法です。どのような理由であれ、ソケットが遠端で閉じている状況を捕捉しません。そのシナリオでは、あなたが@alkが指摘する状況に悩まされています。 –
これは、パフォーマンス面でどれだけ優れた解決策があるかわかりません。わずか1秒待ってもパフォーマンスに深刻な影響がありますが、この期間内にAppleからの返信を保証するものではありません。 –
@MartinKonecny:そうです。私の場合、大きなバッチを送っていたので大丈夫でした。私はそれのまわりに他の方法があるかどうかわからない。 –