Saya saat ini berada dalam lingkungan AngularJS / Javascript.
Saat ini aplikasi menggunakan metode polling (yaitu, untuk mengambil data baru dari server dalam jumlah detik tetap).
Ini sangat melelahkan dan tidak segera mengambil hasil terbaru. Dengan asumsi server menggunakan ASMX untuk fungsi layanan web dan jika mungkin, tanpa perombakan besar, bagaimana saya bisa lebih baik meningkatkan efisiensi aplikasi?
Edit 1:
Dengan memajaki, maksud saya server harus menarik tabel SQL yang berbeda dan data terkait dan hal-hal, yang berarti pemrosesan data yang kompleks yang jika ada banyak pengguna bersamaan saya khawatir mungkin ada masalah dengan kinerja server di masa depan.
Data terbaru tidak akan diambil karena saat ini aplikasi menggunakan jenis panggilan https permintaan-respons.
Saya dapat meningkatkan lebih banyak di sisi aplikasi mobile, tetapi tidak dapat memodifikasi banyak di sisi server selain dari file layanan web server.
Anda dapat menggunakan Server-Sent-Events sebagai alternatif jajak pendapat.
Alih-alih meminta server Anda untuk data baru setiap n detik, buka koneksi khusus dan minta ia mengirim data baru Anda saat tersedia!
Sambungan akan tetap terbuka sampai ditutup secara eksplisit oleh klien atau server (atau dengan penghentian mendadak mereka).
Anda dapat mengatur server Anda untuk menyiarkan data ke klien Anda pada interval tetap, atau pada waktu tertentu di server Anda (katakanlah ketika suatu objek berubah keadaan atau ketika penjadwal memecat suatu pekerjaan atau kapan).
Anda dapat menentukan berbagai jenis acara dan memiliki rutinitas yang berbeda menangani berbagai jenis acara.
Di sisi server Anda dapat menahan antrian dari pengguna yang saat ini berlangganan ke aplikasi / tipe acara Anda, ketika suatu peristiwa dibuat, server Anda akan menyiarkannya ke semua pengguna dalam antrian. Kerangka kerja seperti Jersey2 sudah menerapkan pendekatan ini menggunakan objek Broadcaster .
Di sisi klien Anda harus menulis layanan yang akan mendengarkan acara server yang dikirim pada url tertentu .
Ketika Anda akan memasuki negara / rute Anda harus berlangganan ke jenis server, dan berhenti berlangganan
$destroy
untuk menghindari kebocoran.sumber
Itu adalah websockets: mereka adalah ekssesi HTTP, bekerja di port yang sama.
Ini memungkinkan komunikasi dua arah antara klien dan server dan tentu saja ada integrasi sudut yang tersedia untuk itu.
Kalau tidak di sisi back office, jika Anda melihat Spring di Jawa, ada cara lain untuk melakukannya:
Tautan ini covevr websocket dan metode lain disesuaikan dengan apa yang Anda butuhkan.
Perhatikan bahwa jika Anda tidak memiliki Spring / Java Anda masih harus membacanya dan mencari solusi yang setara di tumpukan teknologi Anda.
sumber
Anda perlu lebih mendefinisikan hal-hal seperti "cukup melelahkan" dan mencari tahu mengapa itu tidak segera mengambil hasil terbaru. Ini adalah pertanyaan yang mungkin terjadi terlepas dari apakah Anda polling dari klien Anda atau tidak.
Yang mengatakan, dengan front end berbasis browser, Anda pada dasarnya memiliki dua opsi jika Anda ingin tetap menggunakan javascript asli: polling (seperti yang Anda lakukan, atau mungkin polling panjang) atau soket web. Saya belum pernah melihat soket web dilakukan dengan ASMX sebelumnya (tidak mengatakan itu tidak dapat dilakukan, hanya saja saya tidak memiliki pengalaman di sana sehingga saya tidak tahu betapa sulitnya bagi Anda untuk menerapkan kembali). Selanjutnya, jika Anda mengalami masalah kinerja atau akurasi, seperti yang saya katakan, itu mungkin masih ada bahkan dengan penggunaan soket web.
sumber