2009-05-24 18 views
6

के रूप में चैट सर्वर को कार्यान्वित करना मेरे पास एक स्कूल प्रोजेक्ट है जिसमें मुझे एक चैट एप्लिकेशन लागू करना है, जिसका सर्वर जावा वेब सेवा होगा।वेब सर्वर

समस्या यह है कि मैंने हमेशा एक दूरस्थ सेवा को कॉल करने के तरीके के रूप में एक वेब सेवा के बारे में सोचा है, और मुझे नहीं पता कि वेब सेवा पर "सत्र" सक्रिय कैसे रखा जाए, न ही सभी का ट्रैक कैसे रखें वर्तमान में चैट, कमरे आदि में लोग

+0

अगली बार जब आप अपने अंग्रेजी शिक्षक उसे दिखाने/उसके अपने मूल प्रश्न की एक प्रति देखें। StackOverflow में आपका स्वागत है। – UnkwnTech

+2

लेकिन स्पष्ट रूप से इंटर्ननेट पर व्याकरण महत्वपूर्ण नहीं है जब तक कि – Chii

+1

व्याकरण अत्यंत महत्वपूर्ण है, हर जगह आप जाते हैं। –

उत्तर

6

मेरे सबसे अच्छे ज्ञान के लिए, एक प्रारंभ सर्वर को प्रारंभिक कनेक्शन के बाद अपने ग्राहकों को जानना चाहिए, और सभी क्लाइंट को सभी क्लाइंट संदेश भेजना चाहिए। यह निश्चित रूप से कुछ प्रकार के सत्र रखरखाव की मांग करता है। मुझे लगता है कि ऐसा करने का सही तरीका निम्नानुसार है:

  1. ग्राहक वेब सेवा 'हैंडशेक' कहता है और कुछ न्यूनतम पहचान विवरण प्रदान करता है।
  2. सर्वर एक पावती देता है जिसमें एक अद्वितीय ग्राहक पहचानकर्ता शामिल होता है।
  3. ग्राहक वेब सेवा 'संदेश' कहता है और इसके पहचानकर्ता के साथ एक नया संदेश भेजता है।
  4. सर्वर पहचानकर्ता द्वारा ग्राहक की पहचान करता है, सभी ग्राहकों को संदेश वितरित करता है।

मुझे सच में यकीन नहीं है कि संदेश वितरण कैसे काम करना चाहिए, क्योंकि वेब सेवाएं अनिवार्य रूप से एक पुल-सेवा हैं और धक्का नहीं देती हैं। सर्वर को कॉल करने के लिए शायद ग्राहक को अपनी वेब सेवा का खुलासा करना चाहिए।

आशा इस मदद करता है,

युवाल = 8-)

+0

'क्लाइंट' को नए संदेशों को खींचने की आवश्यकता होगी, जो कि 'दिल की धड़कन' जैसी ही विधि में किया जा सकता है। – UnkwnTech

+0

यह भी काम कर सकता है ... हालांकि हर संदेश की स्थिति को बनाए रखना महंगा है। सर्वर प्रत्येक बार संपूर्ण संदेश लॉग भेज सकता है, लेकिन यह क्लाइंट के लिए महंगा होगा (नेटवर्क को क्लोग करने का उल्लेख नहीं करना)। – Yuval

+0

यह लगभग आखिरकार हमने किया था। क्लाइंट द्वारा webservice के लिए 3 प्रमुख कॉल - रजिस्टर (मेरी जानकारी जमा करें), एक संदेश भेजें, और मेरे लिए इंतजार कर रहे सभी संदेशों को खींचें। हमने संदेशों को लिंक की गई सूचियों की हैश-टेबल के रूप में सहेजा, जहां हैश-टेबल की कुंजी वह उपयोगकर्ता है जिसके लिए संदेश प्रतीक्षा कर रहे हैं, और मान संदेशों की एक सूची है। इस परियोजना का मुख्य सबक यह था कि वेब सेवा तकनीक इस तरह की चीज़ के लिए सबसे अनुचित है। सभी उत्तरों के लिए Thanx। – MeLight

0

मुझे जावा नहीं पता है इसलिए यह उत्तर भाषा अज्ञेयवादी होगा।

मेरी राय में सर्वर पर प्रक्रिया चलाने के बिना ऐसा करने का सबसे आसान तरीका डेटाबेस में आपके सभी डेटा को स्टोर करना होगा। के लिए वर्तमान में उपयोग में लॉग इन एक मेज की आवश्यकता

  1. प्रमाणीकरण
  2. के लिए उपयोगकर्ताओं और पासवर्ड की सूची के साथ एक मेज की आवश्यकता है:

    यहाँ बुनियादी चीजें हैं जो किया जा करने की आवश्यकता होगी की एक छोटी सूची है
    ए पिछले संपर्क

  3. के समय स्टाम्प क्षेत्र की जरूरत है एक उन कुछ वर्तमान समय
  4. तो उपयोगकर्ता पिछले संपर्क समय है करने के लिए पिछले संपर्क क्षेत्र को अद्यतन करता है> वर्तमान समय +2 तो मिनट वे लॉग आउट हैं
  5. क्लाइंट साइड एप्लिकेशन को सर्वर पर आवधिक संदेश भेजने की आवश्यकता होगी "आईएम अभी भी"
  6. आपको यह निर्धारित करने के लिए एक तरीका ढूंढना होगा कि कोई संदेश कब भेजा गया है और ग्राहक को अपडेट कब किया जाए प्रदर्शित करें कि एक संदेश प्राप्त हुआ है, यह मैं आपको छोड़ दूंगा।

यदि आपको अभी भी कुछ मदद की ज़रूरत है तो यहां एक AJAX/ASP.Net चैट ऐप है जिसे (मैंने इसके स्रोत को नहीं देखा) उसी तरह काम करना चाहिए।

+0

आप ऐप के लिंक को भूल गए हैं ... – RedFilter

0

मैं एक चैट इंजन जो एक डेटाबेस, एक इनपुट प्रपत्र फ्रेम और एक आउटपुट फ्रेम जो प्राप्त में संग्रहीत पृष्ठभूमि और सब कुछ में एक सेवा के लिए किया था लिखा था एचटीएमएल स्ट्रीम।

यदि आप सेवा भाग को छोड़ना चाहते हैं और केवल एक वेब सेवा के माध्यम से लागू करना चाहते हैं, तो आपको कम से कम दो ऑपरेशंस लागू करने की आवश्यकता है: इनपुट के लिए पोस्ट करें, और चैट के आउटपुट प्राप्त करने के लिए GetLatestChanges, जो कुछ जावास्क्रिप्ट जादू का उपयोग करके HTML में अनुवाद करता है।

बेशक आपको कमरे, उपयोगकर्ताओं, संदेशों का ट्रैक रखने की आवश्यकता है, जो उपयोगकर्ता को कौन से ग्रंथ आदि प्राप्त करते हैं, जैसा कि Unknwntech द्वारा स्केच किया गया है।

1

आप COMET समाधान को लागू करने पर विचार कर सकते हैं। यह आपको प्रभावी ढंग से धक्का संचार देगा, इस प्रकार विलंबता को समाप्त करेगा, चैट एप्लिकेशन के लिए एक बहुत अच्छी सुविधा है।

आप सोने के लिए जाना चाहते हैं, और अधिक उन्नत सुविधाओं को लागू करने पर विचार करें: स्वचालित रूप से लिंक

  • अलग चैट रूम
  • मॉडरेटर कार्यों के लिए परिवर्तित

    • वर्तनी जाँच
    • यूआरएल/ईमेल पते (चैट समाप्त करें, उपयोगकर्ता को लातें)
    • घटना की जानकारी जैसे "उपयोगकर्ता टाइप कर रहा है ..."
    • स्थिति (उपलब्ध, bu एसवाई, दूर ...)
    • अवतारों
    • ...
  • संबंधित मुद्दे