संक्षिप्त उत्तर 'दोनों' है।
एक्सएमपीपी वास्तविक समय चैट (और उस मामले के लिए कई अन्य चीजें) करने के लिए एप्लिकेशन प्रोटोकॉल का एक सेट है - यह तब किसी भी तरह से पूरे नेटवर्क में ले जाया जाना है, इसलिए आपको परिवहन बंधन की आवश्यकता है। XMPP के लिए तीन मुख्य परिवहन बाइंडिंग हैं -
- टीसीपी / आईपी, जो कि आमतौर पर उपकरणों पर देशी ग्राहकों के साथ इंटरनेट पर उपयोग होता है
- HTTP (BOSH कहा जाता है), जो कि किसी ने पारंपरिक रूप से ब्राउज़र में XMPP का उपयोग करते समय उपयोग किया है (जैसा कि TCP-IP ब्राउज़र में जावास्क्रिप्ट ऐप्स के लिए उपलब्ध नहीं है)
- वेबस्कैट, जो एक आधुनिक ब्राउज़र में XMPP करते समय एक का उपयोग करता है।
इसलिए यदि आप किसी ब्राउज़र में चैट एप्लिकेशन विकसित कर रहे हैं, तो आप XMPP को एप्लिकेशन प्रोटोकॉल के रूप में चुनेंगे और आप नेटवर्क ट्रांसपोर्ट के रूप में वेबस्केट (आधुनिक ब्राउज़र में) या BOSH (पुराने ब्राउज़र में) का उपयोग करेंगे। यदि आप Stanza.io ( https://github.com/otalk/stanza.io ) की तरह जावास्क्रिप्ट के लिए एक XMPP लाइब्रेरी का उपयोग करते हैं , तो यह दोनों को सपोर्ट करेगा और आप ट्रांसपोर्ट लेयर के बजाय सिर्फ 'XMPP' के बारे में सोचेंगे , सेटअप के अलावा जब आपको यह बताना होगा कि किस से कनेक्ट करना है।
(आप चैट के लिए 'सिर्फ वेबसोकेट्स' का उपयोग नहीं कर सकते हैं - आप एक्सएमपीपी के बिना वेबसोकेट्स का उपयोग कर सकते हैं, लेकिन इसका वास्तव में मतलब यह है कि आप चैट के लिए अपने स्वयं के एप्लिकेशन-लेयर प्रोटोकॉल का आविष्कार कर रहे हैं, और आप जो बचत करने जा रहे हैं। उस कार्य का लाभ उठाकर बहुत समय और सिरदर्द जो पहले से ही उपयोगी गुणों (सुरक्षा, पहचान, विस्तार आदि) के साथ एक में लिख गया है और जिसके लिए XMPP के बजाय मौजूदा लाइब्रेरी और सर्वर मौजूद हैं।)