Saya memiliki satu keraguan dasar yang belum ditemukan setelah mencari di pencarian dan stackoverflow. Saya memiliki implementasi backend polling yang panjang di PHP. Logikanya adalah bahwa koneksi tetap hidup sampai pesan baru ditemukan di server. Ini adalah loop tak terbatas di mana di dalamnya mengembalikan pesan baru jika tersedia dan memutus koneksi atau tidak mengirim respons apa pun jika tidak ada pesan baru yang tersedia. Semuanya baik-baik saja. Tidak ada masalah dengan backend dan konsep polling panjang.

Masalah atau batasan utama yang saya hadapi adalah di frontend yaitu iOS. Saya memiliki NSURLRequest untuk mengatur koneksi ke backend "jajak pendapat panjang" saya tetapi koneksi permintaan ujung depan saya memiliki periode waktu habis default yang memutus koneksi ketika mencapai interval waktu habis itu. Ini adalah batasan saya di sini. Menurut dokumentasi Apple, mereka memiliki penginisialisasi yang mengambil argumen interval batas waktu khusus tetapi sekali lagi pertanyaan saya tetap, nilai interval apa yang harus saya berikan di sini? https://developer.apple.com/documentation/foundation/nsurlrequest/1528579- requestwithurl

Dalam skenario di mana tidak dapat diprediksi kapan pesan baru akan tersedia, saya tidak tahu berapa nilai interval waktu yang disarankan untuk diberikan. Pertanyaan saya adalah untuk mengetahui apakah ada nilai yang menunjukkan interval waktu habis tak terbatas? Jika tidak maka apa yang Anda rekomendasikan untuk menggunakan nilai batas waktu dan ketika nilai batas waktu itu berakhir dan menutup koneksi, lalu Bagaimana cara menangani sesi polling lain dengan lancar di front end.

Tujuan saya adalah untuk menghindari membuat lebih banyak koneksi http yang sudah dicegah dengan menggunakan cara polling yang panjang. Tetapi jika koneksi ujung depan saya habis, katakanlah setiap 60 detik maka saya harus memulai permintaan lain. Jika itu satu-satunya cara maka saya baik-baik saja tetapi Jika ada cara untuk menjaga koneksi saya tetap hidup di frontend sampai backend menutupnya, beri tahu saya.

Jawaban untuk solusi dapat berupa Swift atau objC di sini. Saya hanya butuh jawaban konseptual.

EDIT SOLUSI: Saya tidak yakin apakah saya harus menandainya diselesaikan dengan memposting jawaban. Tapi solusi saya tampaknya menjadi nilai absolut yang mewakili hampir tak terhingga untuk NSTimeInterval yang ganda di bawah tenda. Berikut tautannya: Konstanta apa yang mewakili "tidak pernah" untuk NSTimeInterval?

-1
padam thapa 20 September 2019, 08:22

1 menjawab

Jawaban Terbaik

Setel batas waktu permintaan ke .infinity, ini akan membuat koneksi tetap hidup selamanya (jika tidak ada masalah dengan jaringan atau lainnya.)

Karena mungkin ada masalah jaringan, atau masalah latar belakang, dll., iOS dapat menutup koneksi terlepas dari batas waktu. Jadi, Anda harus mendengarkan situasi kegagalan dalam panggilan balik respons (atau mendelegasikan), dan mencoba lagi permintaan jika diperlukan.

0
Mojtaba Hosseini 20 September 2019, 05:47