Saya sudah mencoba membaca beberapa artikel, tetapi saya belum begitu mengerti konsepnya.
Apakah ada orang yang ingin menjelaskan kepada saya apa teknologi ini:
- Polling Panjang
- Acara yang Dikirim Server
- Soket web
- Komet
Satu hal yang saya temui setiap kali adalah, server membuat koneksi tetap terbuka dan mendorong data ke klien. Bagaimana koneksi tetap terbuka, dan bagaimana klien mendapatkan data yang didorong? (Bagaimana klien menggunakan data, mungkin beberapa kode mungkin membantu?)
Sekarang, yang mana yang harus saya gunakan untuk aplikasi waktu nyata. Saya telah mendengar banyak tentang soket web (dengan socket.io [perpustakaan node.js]) tetapi mengapa tidak PHP?
php
websocket
comet
long-polling
server-sent-events
pengguna1437328
sumber
sumber
Jawaban:
Dalam contoh di bawah ini, klien adalah browser dan server adalah server web yang menampung situs web.
Sebelum Anda dapat memahami teknologi ini, Anda harus memahami lalu lintas web HTTP klasik terlebih dahulu.
HTTP reguler:
Ajax Polling:
Ajax Polling Panjang:
Server Terkirim Acara HTML5 (SSE) / EventSource:
Server mengirim acara ke klien ketika ada informasi baru yang tersedia.
HTML5 Websockets:
Server dan klien sekarang dapat saling mengirim pesan ketika data baru (di kedua sisi) tersedia.
Komet:
Comet adalah kumpulan teknik sebelum HTML5 yang menggunakan streaming dan polling panjang untuk mencapai aplikasi waktu nyata. Baca lebih lanjut di wikipedia atau artikel ini .
Anda dapat menggunakan PHP dengan WebSockets, periksa Ratchet .
sumber
Tieme berusaha keras untuk menjawabnya dengan sangat baik, tapi saya pikir inti dari pertanyaan OP adalah bagaimana teknologi ini berhubungan dengan PHP daripada bagaimana masing-masing teknologi bekerja.
PHP adalah bahasa yang paling banyak digunakan dalam pengembangan web selain sisi klien yang jelas html, css, dan javascript. Namun PHP memiliki 2 masalah utama dalam hal aplikasi waktu nyata:
1) PHP dimulai sebagai CGI yang sangat mendasar. PHP telah berkembang sangat jauh sejak tahap awal, tetapi terjadi dalam langkah-langkah kecil. PHP sudah memiliki jutaan pengguna pada saat itu menjadi pustaka C yang fleksibel yang dapat diembed dan fleksibel seperti sekarang ini, yang sebagian besar bergantung pada model eksekusi sebelumnya, sehingga belum membuat upaya yang solid untuk melarikan diri dari model cgi secara internal. Bahkan antarmuka commandline memanggil perpustakaan PHP (libphp5.so di linux, php5ts.dll di windows, dll) seolah-olah masih cgi yang memproses permintaan GET / POST. Itu masih mengeksekusi kode seolah-olah itu hanya harus membangun "halaman" dan kemudian mengakhiri siklus hidup itu. Sebagai hasilnya, ia hanya memiliki sedikit dukungan untuk pemrograman multi-thread atau event-driven (dalam ruang pengguna PHP), menjadikannya saat ini tidak taktis untuk aplikasi multi-pengguna waktu nyata.
Perhatikan bahwa PHP memang memiliki ekstensi untuk menyediakan loop acara (seperti libevent) dan utas (seperti pthreads) di ruang pengguna PHP, tetapi sangat, sangat, sangat sedikit aplikasi yang menggunakan ini.
2) PHP masih memiliki masalah signifikan dengan pengumpulan sampah. Meskipun masalah-masalah ini telah secara konsisten membaik (kemungkinan itu adalah langkah terbesar untuk mengakhiri siklus hidup seperti yang dijelaskan di atas), bahkan upaya terbaik untuk membuat aplikasi PHP yang berjalan lama perlu dimulai kembali secara teratur. Ini juga membuatnya tidak taktis untuk aplikasi waktu nyata.
PHP 7 akan menjadi langkah yang bagus untuk memperbaiki masalah ini juga, dan tampaknya sangat menjanjikan sebagai platform untuk aplikasi real-time.
sumber
Saya telah mencoba membuat catatan tentang ini dan telah mengumpulkan dan menulis contoh dari perspektif java .
HTTP untuk Pengembang Java
Reverse Ajax - Gaya lama
Async Handling di sisi server
Reverse Ajax - Gaya baru
Server Terkirim Acara
Menempatkannya di sini untuk semua pengembang java yang mencari topik yang sama.
sumber
Anda dapat dengan mudah menggunakan Node.JS di aplikasi web Anda hanya untuk komunikasi waktu nyata. Node.JS sangat kuat ketika ini tentang WebSockets. Oleh karena itu "Pemberitahuan PHP via Node.js" akan menjadi konsep yang hebat.
Lihat contoh ini: Membuat Aplikasi Obrolan Real-Time dengan PHP dan Node.js
sumber