Tentu saja saya tahu tentang Ajax, tetapi masalah dengan Ajax adalah browser harus sering memeriksa server untuk menemukan apakah ada data baru. Ini meningkatkan beban server.
Apakah ada metode yang lebih baik (bahkan menggunakan Ajax) selain sering melakukan polling ke server?
Jawaban:
Ya, yang Anda cari adalah COMET http://en.wikipedia.org/wiki/Comet_(programming) . Istilah Google lain yang bagus untuk dicari adalah AJAX-push dan reverse-ajax.
sumber
Ya, ini disebut Reverse Ajax atau Comet . Comet pada dasarnya adalah istilah umum untuk berbagai cara membuka permintaan HTTP berumur panjang untuk mendorong data secara real-time ke browser web. Saya akan merekomendasikan StreamHub Push Server , mereka memiliki beberapa demo keren dan jauh lebih mudah untuk memulai daripada server lainnya. Lihat Tutorial Memulai Comet dan StreamHub untuk pengenalan singkat. Anda dapat menggunakan Edisi Komunitas yang tersedia untuk diunduh secara gratis tetapi terbatas untuk 20 pengguna bersamaan. Versi komersial sangat berharga untuk dukungan saja ditambah Anda mendapatkan adaptor klien SSL dan Desktop .NET & Java. Bantuan tersedia melalui Google Grup, ada banyak tutorial bagus di internet dan ada juga adaptor GWT Comet .
sumber
Saat ini Anda harus menggunakan WebSockets. Ini adalah standar 2011 yang memungkinkan untuk memulai koneksi dengan HTTP dan kemudian meningkatkannya ke komunikasi berbasis pesan klien-server dua arah.
Anda dapat dengan mudah memulai koneksi dari javascript:
var ws = new WebSocket("ws://your.domain.com/somePathIfYouNeed?args=any"); ws.onmessage = function (evt) { var message = evt.data; //decode message (with JSON or something) and do the needed };
Penanganan sisi server tergantung pada tenchnology stack Anda.
sumber
Lihatlah ke Comet (spoof dari fakta bahwa Ajax adalah agen pembersih dan begitu juga Comet) yang pada dasarnya adalah "Ajax terbalik." Ketahuilah bahwa ini membutuhkan koneksi server yang tahan lama bagi setiap pengguna untuk menerima pemberitahuan, jadi waspadalah dengan implikasi kinerja saat menulis aplikasi Anda.
http://en.wikipedia.org/wiki/Comet_(programming)
sumber
Komet pasti yang Anda inginkan. Bergantung pada persyaratan bahasa / kerangka kerja Anda, ada pustaka server berbeda yang tersedia. Misalnya, WebSync adalah server komet yang terintegrasi dengan IIS untuk pengembang ASP.NET/C#/IIS , dan ada banyak server mandiri lainnya juga jika Anda memerlukan integrasi yang lebih erat dengan bahasa lain.
sumber
Saya sangat menyarankan untuk menginvestasikan waktu di Comet, tetapi saya tidak tahu implementasi atau pustaka aktual yang dapat Anda gunakan.
Untuk semacam "panel kontrol pusat panggilan" dari aplikasi web yang melibatkan agen pembaruan dan status antrian panggilan untuk Pusat Panggilan langsung, kami mengembangkan solusi internal yang berfungsi, tetapi jauh dari perpustakaan yang dapat Anda gunakan.
Apa yang kami lakukan adalah menerapkan layanan kecil di server yang terhubung ke sistem telepon, menunggu acara baru dan menyimpan foto situasi tersebut. Layanan ini menyediakan server web kecil.
Klien web kami terhubung melalui HTTP ke server web ini dan meminta foto terakhir (dikodekan dalam XML), menampilkannya dan kemudian pergi lagi, meminta foto baru. Server web saat ini dapat:
Dengan cara ini, ketika klien melakukan polling, ia mendapat respons dalam maks 0 hingga 30 detik. Jika acara baru sudah dibuat, acara itu akan segera mendapatkannya), jika tidak, acara akan diblokir hingga acara baru dibuat.
Ini pada dasarnya adalah polling, tetapi polling agak cerdas untuk tidak membuat server web terlalu panas. Jika Comet bukan jawaban Anda, saya yakin ini dapat diimplementasikan menggunakan ide yang sama tetapi menggunakan AJAX atau pengkodean yang lebih ekstensif di JSON untuk hasil yang lebih baik. Ini dirancang sebelum era AJAX, jadi ada banyak ruang untuk perbaikan.
Jika seseorang dapat memberikan implementasi ringan yang sebenarnya dari ini, bagus!
sumber
Alternatif menarik untuk Comet adalah menggunakan soket di Flash.
sumber
Namun cara lain, standar, adalah SSE (Server-Sent Events, juga dikenal sebagai EventSource , setelah objek JavaScript).
sumber
Komet sebenarnya diciptakan oleh Alex Russell dari Dojo Toolkit ( http://www.dojotoolkit.org ). Ini adalah tautan ke informasi lebih lanjut http://cometdproject.dojotoolkit.org/
sumber
Ada metode lain. Tidak yakin apakah mereka "lebih baik" dalam situasi Anda. Anda bisa memiliki applet Java yang terhubung ke server saat halaman dimuat dan menunggu barang dikirim oleh server. Ini akan menjadi sedikit lebih lambat saat start-up, tetapi akan memungkinkan browser menerima data dari server secara jarang, tanpa polling.
sumber
Anda dapat menggunakan aplikasi Flash / Flex di klien dengan BlazeDS atau LiveCycle di sisi server. Data dapat dikirim ke klien menggunakan koneksi RTMP. Ketahuilah bahwa RTMP menggunakan port non standar. Namun Anda dapat dengan mudah kembali ke polling jika porta diblokir.
sumber
Anda dapat mencapai apa yang Anda tuju melalui penggunaan koneksi http yang persisten.
Lihat artikel Comet di wikipedia, itu tempat yang baik untuk memulai.
Anda tidak memberikan banyak info tetapi jika Anda ingin membangun semacam situs yang digerakkan oleh peristiwa (mata-mata a'la digg) atau sesuatu yang sejalan dengan itu, Anda mungkin akan melihat penerapan IFRAME tersembunyi yang terhubung ke url di mana koneksi tidak pernah ditutup dan kemudian Anda akan mendorong tag skrip dari server ke klien untuk melakukan pembaruan.
sumber
Mungkin ada baiknya mencoba Meteor Server yang merupakan server web yang dirancang untuk COMET. Demo bagus dan juga digunakan oleh twitterfall .
sumber
Setelah koneksi dibuka ke server, itu dapat tetap terbuka dan server dapat Mendorong konten beberapa waktu yang lalu saya lakukan dengan menggunakan
multipart/x-mixed-replace
tetapi ini tidak berfungsi di IE.Saya pikir Anda dapat melakukan hal-hal pintar dengan polling yang membuatnya bekerja lebih seperti push dengan tidak mengirim header konten yang tidak diubah tetapi membiarkan koneksi terbuka tetapi saya tidak pernah melakukan ini.
sumber
Anda dapat mencoba Komponen Komet kami - meskipun ini sangat eksperimental ...!
sumber
silakan periksa pustaka ini https://github.com/SignalR/SignalR untuk mengetahui cara mendorong data ke klien secara dinamis saat tersedia
sumber
Anda juga dapat melihat ke Java Pushlets jika Anda menggunakan halaman jsp.
sumber
Mungkin ingin melihat ReverseHTTP juga.
sumber