楽しみのために、私は小さなソケット ベースのチャット アプリケーションを作成しました。nodejsサーバーとtcpソケットを介して話しています。メッセージを正常に送受信しています。ただし、ホームボタンを押してアプリをバックグラウンドにすると問題が発生します。この時点で、ソケットは「一時停止」しているように見え、この間に送信されたすべてのメッセージが失われます。
アプリがバックグラウンドにあるときにプッシュ通知を設定しましたが、アプリでソケットがアクティブになっていないため、メッセージが実際にアプリに到達することはありません。
これをどのように処理すればよいですか?私のオプションは何ですか?私はいくつかのアイデアを持っていますが、人々がこれをどのように扱っているかについて、ここでいくつかの情報を提供したいと思います.
私のアイデア:
チャネルのすべての履歴を送信する「loadHistory」メソッドを nodejs サーバーに追加します。私のアプリが特定の URL を呼び出して、すべてのメッセージで JSON 形式の応答を取得できるようにします。テーブル項目がタッチされるたびにこれを行うべきでしょうか?
新しい iOS7 バックグラウンド実行機能を利用しますか? (それでソケットを生かしておくことができるかどうかはわかりません)
メッセージが配信されたかどうかをサーバーが知る方法を実装します。配信できなかった場合は、メッセージをデータベースに保存します。クライアントが再びオンラインになるとすぐに、TCP 経由でメッセージを送信します。これにはサーバーに多くの機能を追加する必要があるため、可能であればこれを避けたいと考えています。