Jawaban singkatnya adalah 'keduanya'.
XMPP adalah seperangkat protokol aplikasi untuk melakukan obrolan waktu nyata (dan banyak hal lainnya, dalam hal ini) - ia kemudian harus dipindahkan ke seluruh jaringan, jadi Anda memerlukan pengikatan transportasi. Ada tiga binding transport utama untuk XMPP -
- TCP / IP, yang biasanya digunakan seseorang di Internet dengan klien asli di perangkat
- HTTP (disebut BOSH), yang biasanya digunakan seseorang saat menggunakan XMPP di browser (karena TCP-IP tidak tersedia untuk aplikasi Javascript di browser)
- Websockets, yang digunakan saat melakukan XMPP di browser modern.
Jadi jika Anda mengembangkan aplikasi obrolan di browser, Anda akan memilih XMPP sebagai protokol aplikasi dan Anda akan menggunakan websockets (di browser modern) atau BOSH (di browser lama) sebagai transportasi jaringan. Jika Anda menggunakan pustaka XMPP untuk Javascript seperti Stanza.io ( https://github.com/otalk/stanza.io ), ini akan mendukung keduanya dan Anda hanya akan memikirkan 'XMPP' daripada lapisan transport, selain saat penyiapan, Anda harus memberitahukannya titik akhir apa yang harus disambungkan.
(Anda tidak dapat menggunakan 'hanya websockets' untuk mengobrol - Anda dapat menggunakan websockets tanpa XMPP, tetapi yang sebenarnya berarti bahwa Anda menciptakan protokol lapisan aplikasi Anda sendiri untuk mengobrol, dan kemungkinan besar Anda akan menghemat banyak waktu dan sakit kepala dengan memanfaatkan pekerjaan yang sudah ditulis dengan properti yang berguna (keamanan, identitas, ekstensibilitas, dll.) dan untuk itu ada perpustakaan dan server yang ada dengan menggunakan XMPP sebagai gantinya.)