2011-08-29 24 views
5

अस्पष्ट प्रश्न के लिए खेद है, लेकिन Omegle ठीक है जो मैं अपनी साइट के लिए चाहता हूँ। यह नंगे चैट सिस्टम है। आप तुरंत संदेश भेजते और प्राप्त करते हैं। मैंने आज एक शॉउटबॉक्स विधि की तलाश की है, लेकिन मुझे लगता है कि लोग जांच कर रखने के लिए MySQL और जावास्क्रिप्ट अंतराल का उपयोग करने के लिए कह रहे थे। हालांकि नए संदेशों के साथ तुरंत Omegle अद्यतन। यह कैसे काम करता है?ओमेगल कैसे काम करता है?

+3

एक कुशल चैट सिस्टम में एक कनेक्शन होता है जहां सर्वर क्लाइंट को नए संदेशों के बारे में नए प्रश्न पूछने की विधि के विपरीत नए संदेशों के बारे में सूचित करता है क्योंकि कोई कनेक्शन नहीं रहता है। – Nobody

+0

तब मैं यह कैसे करूं? – mowwwalker

+1

शायद यह संभवतः धूमकेतु पृष्ठ के 'स्ट्रीमिंग' अध्याय में वर्णित कुछ के साथ किया जाता है (http://en.wikipedia.org/wiki/Comet_ (प्रोग्रामिंग))। निश्चित रूप से तीसरे पक्ष की लाइब्रेरी है जो PHP में धूमकेतु को कार्यान्वित करती है, इसे गुगल करने का प्रयास करें। – J0HN

उत्तर

11

आपको यह wikipedia article पढ़ना चाहिए, इससे आपको प्रक्रिया की बेहतर जानकारी मिल जाएगी।

यहां मुख्य कीवर्ड लंबे मतदान, websockets, फ़्लैश सॉकेट हैं।

इसके अलावा, यह (स्थानों में से एक) है जहां node.js + socket.io चमक।

4

यह केक का एक टुकड़ा है। आपको केवल सर्वर की आवश्यकता है जिसे आप कुछ मिनटों में लिख सकते हैं (सी # में, PHP के बारे में निश्चित नहीं)। सर्वर उदाहरण के लिए इस तरह, HTTP GET अनुरोध को स्वीकार करना चाहिए:

GET /chat?room=someroom&me=Jerod HTTP/1.1

और उसके कनेक्शन को खुला रखने के (सिर्फ उदाहरण Dictionaty<string, Dictionary<string, TcpClient>> clients; के लिए TcpClient वस्तु और इसे गले में कुछ शब्दकोश के तहत स्वीकार इस तरह: clients["someroom"].Add("Jerod", tcpClient); और इसे पकड़ नहीं होने तक, डेटा Jerod को वापस भेजने के लिए)

और यह पोस्ट है, जो उपयोगकर्ता के कमरे में अन्य उपयोगकर्ताओं के लिए भेजने की कोशिश कर रहा है पाठ रखती है स्वीकार करना चाहिए:

POST /chat?room=someroom&me=Sara HTTP/1.1 
Content-Length: 2 

Hi 

जब सर्वर इसे प्राप्त करता है, तो यह जानता है कि सारा कमरे "someroom" में सभी उपयोगकर्ताओं को "हाय" भेज रही है। Jerod के बाद से, कभी नहीं मिल का उत्तर मिला, कनेक्शन अभी भी खुला है, और सभी सर्वर एक शब्दकोश से कि कनेक्शन लेने करना है (या कुछ अन्य डेटा संरचना) और के साथ जवाब:

HTTP 200 OK 
Content-Length: <length> 

Sara: Hi 

और, ग्राहकों की ओर, आपके पास XMLHttpRequest ऑब्जेक्ट (GET विधि के साथ AJAX) होगा जिसमें इसका टाइमआउट 0 (अनंत तक अवरुद्ध) होगा और इसका उपयोग सर्वर से कनेक्शन खोलने के लिए किया जाएगा जिसके माध्यम से यह अन्य लोगों को भेजने वाली सामग्री को आगे बढ़ाएगा।

और आपको एक और पोस्ट XMLHttpRequest की आवश्यकता है जिसका उपयोग आप अन्य ग्राहकों को डेटा भेजने के लिए करेंगे।

जब पहला AJAX (GET) सफल होता है, तो आप उस DIEX को लिखते हैं (यह "सारा: हाय" है) कुछ डीआईवी में, और उसी जीईटी अनुरोध को दोबारा बनाते हैं ताकि सर्वर उपयोगकर्ता को यह बता सके कि कोई व्यक्ति बाकी सारा के बाद पोस्ट किया गया है ...

जब दूसरे AJAX (बाद का) सफल होता है, तो आप div करने के लिए जो भी उपयोगकर्ता जे एस में, भेजे जाने के लिए प्रवेश किया है तो तरह, उपयोगकर्ता नाम के साथ prepended लिखें: document.getElementById("chat").innerHTML += uname+": "+txt;

इसकी सुंदर सीधे आगे और सरल।

संबंधित मुद्दे