คำตอบสั้น ๆ คือ 'ทั้งสอง'
XMPP เป็นชุดโปรโตคอลของแอปพลิเคชันสำหรับการแชทแบบเรียลไทม์ (และอื่น ๆ อีกมากมายสำหรับเรื่องนั้น) - จากนั้นจะต้องถูกส่งผ่านเครือข่ายดังนั้นคุณต้องมีการผูกการขนส่ง การผูกการขนส่งหลักสามแบบสำหรับ XMPP -
- TCP / IP ซึ่งเป็นสิ่งที่มักใช้บนอินเทอร์เน็ตกับไคลเอนต์เนทีฟบนอุปกรณ์
- HTTP (เรียกว่า BOSH) ซึ่งเป็นสิ่งที่ใช้กันทั่วไปเมื่อใช้ XMPP ในเบราว์เซอร์ (เนื่องจาก TCP-IP ไม่พร้อมใช้งานสำหรับแอป Javascript ในเบราว์เซอร์)
- Websockets ซึ่งเป็นสิ่งที่ใช้เมื่อทำ XMPP ในเบราว์เซอร์สมัยใหม่
ดังนั้นหากคุณกำลังพัฒนาแอปพลิเคชันแชทในเบราว์เซอร์คุณจะต้องเลือก XMPP เป็นโปรโตคอลของแอปพลิเคชันและคุณจะใช้เว็บซ็อกเก็ต (ในเบราว์เซอร์รุ่นใหม่) หรือ BOSH (ในเบราว์เซอร์รุ่นเก่า) เป็นเครือข่าย หากคุณใช้ไลบรารี XMPP สำหรับ Javascript เช่น Stanza.io ( https://github.com/otalk/stanza.io ) มันจะรองรับทั้งสองอย่างและคุณจะคิดถึง 'XMPP' มากกว่าเลเยอร์การขนส่ง นอกเหนือจากการตั้งค่าเมื่อคุณต้องบอกจุดสิ้นสุดที่จะเชื่อมต่อ
(คุณไม่สามารถใช้ 'เว็บซ็อกเก็ต' สำหรับการแชทได้คุณสามารถใช้ websockets โดยไม่มี XMPP ได้ แต่สิ่งนี้หมายความว่าคุณกำลังสร้างโปรโตคอลชั้นแอปพลิเคชันของคุณเองสำหรับการแชทและอัตราต่อรองที่คุณจะบันทึกไว้ เสียเวลาและปวดหัวมากโดยใช้ประโยชน์จากงานที่เขียนไปแล้วซึ่งมีคุณสมบัติที่เป็นประโยชน์ (ความปลอดภัยข้อมูลประจำตัวความสามารถในการขยาย ฯลฯ ) และมีไลบรารีและเซิร์ฟเวอร์ที่มีอยู่แล้วโดยไปที่ XMPP แทน)