2010-08-23 12 views
5

मैं सर्वर पक्षीय चर के साथ एक अनुप्रयोग बना रहा हूं जो हर सेकेंड में बदल जाता है। प्रत्येक दूसरे उन नए चर को उन सभी ग्राहकों पर दिखाया जाना चाहिए जिनके पास वेबपृष्ठ खुला है।एएसपी.नेट - धूमकेतु सर्वर से सभी ग्राहकों को संदेश धक्का दे रहा है

अब ज्यादातर लोगों धूमकेतु साथ जाने के लिए क्योंकि मैं धक्का/डेटा हर दूसरे को खींचने के लिए की जरूरत है मुझे बताया था, अब मैं कुछ सवाल है:

  • क्या एक बेहतर समाधान को देखकर किया जाएगा तथ्य यह है कि मुझे क्लाइंट से खींचने या सर्वर से धक्का देने के लिए हर सेकेंड में नया डेटा चाहिए?

  • इसके अलावा आइटम आईडी जो सर्वर की ओर हैं (वेरिएबल की आईडी के साथ) बदल सकती है और जब ग्राहक पृष्ठ को रीफ्रेश करता है तो उसे सबसे पुराना (और जीवित) आईडी प्राप्त करने की आवश्यकता होती है। इसका मतलब यह होगा कि क्लाइंट पक्ष पर मेरी jquery/जावास्क्रिप्ट को पता होना चाहिए कि उसे पृष्ठ पर कौन सी आईडी मिली है, यह करने का सबसे अच्छा तरीका क्या है?

  • आखरी बात यह है कि मुझे एएसपीनेट (सी #) के लिए धूमकेतु लाइब्रेरी/एपीआई (महंगा नहीं) कॉमेट लाइब्रेरी/एपीआई नहीं मिल रहा है। किसी ने कभी भी अच्छे परिणामों के साथ धूमकेतु पुस्तकालय का उपयोग किया? हम ऐसी साइट देख रहे हैं जो हर पल में 2000 धूमकेतु कनेक्शन प्राप्त करने में सक्षम होना चाहिए।

उत्तर

2

क्या एक बेहतर समाधान , तथ्य यह है कि मैं नए डेटा हर दूसरे की जरूरत को देखकर ग्राहक से खींच या सर्वर के साथ धक्का होगा?

मुझे नहीं लगता कि इससे कोई फर्क नहीं पड़ता, अनुरोध के बीच का समय और समय के साथ नया डेटा उपलब्ध होगा। पिछले एक सफल होने के बाद मैं क्लाइंट पर एक नया XMLHttpRequest को तुरंत चालू कर दूंगा। आप सर्वर को अंतिम प्राप्त डेटा भेज सकते हैं (यदि बहुत बड़ा नहीं है) तो यह सर्वर पर उपलब्ध मौजूदा डेटा के साथ उस डेटा की तुलना कर सकता है और केवल नया डेटा उपलब्ध होने पर कुछ वापस भेज सकता है।

आइटम आईडी के कि सर्वर साइड (चर का कि आईडी मिल गया के साथ) पर हैं बदल सकते हैं और जब ग्राहक पेज ताज़ा करता है वह सबसे पुरानी (और रहने वाले) पहचान पत्र प्राप्त करने के लिए की जरूरत है। यह का अर्थ है कि क्लाइंट पक्ष पर मेरी jquery/जावास्क्रिप्ट को पता होना चाहिए कि वह कौन सा आईडी पृष्ठ पर मिला है, का सबसे अच्छा तरीका क्या है?

मुझे पूरा यकीन नहीं है कि मैं समझता हूं कि आपका क्या मतलब है, लेकिन यदि मैं सही हूं तो आप किसी ऑब्जेक्ट में प्रत्येक नाम/मूल्य जोड़ी को स्टोर कर सकते हैं। जब क्लाइंट पर कोई नया चर आता है, तो यह मौजूदा डेटा को ओवरराइट नहीं करता है; जब एक निश्चित चर पहले से मौजूद है, तो यह नवीनतम मान के साथ अद्यतन किया जाता है।

{ first_variable: 345, 
    second_one: "foo", 
    and_the_third: ["I", "am", "an", "array,", "hooray!"] 
} 

और second_one के एक नए राज्य आने पर, उदाहरण के लिए: यह दिखाई दे सकता है "bar", वस्तु के लिए अद्यतन किया जाता है:

{ first_variable: 345, 
    second_one: "bar", 
    and_the_third: ["I", "am", "an", "array,", "hooray!"] 
} 

अंतिम बात यह है कि मैं एक अच्छा (महंगा करने के लिए नहीं) धूमकेतु पुस्तकालय/asp.net के लिए एपीआई (सी #) नहीं मिल सकता है। किसी ने कभी भी अच्छे परिणाम के साथ धूमकेतु लाइब्रेरी का उपयोग किया है?

मैं ASP.NET के साथ किसी भी अनुभव की जरूरत नहीं है, लेकिन आप इस के लिए इस तरह के एक पुस्तकालय की आवश्यकता है? क्या आप केवल सर्वर-साइड कोड प्रोग्राम नहीं कर सकते हैं, जैसा कि मैंने कहा था, कनेक्शन को खुले और समय-समय पर (लगातार) पिछले राज्य की तुलना में वर्तमान स्थिति की तुलना करता है?


अद्यतन: यह एक कनेक्शन सर्वर साइड पर खुला रखने के लिए है कि मुश्किल नहीं है दिखाने के लिए, मैं तुम्हें एक लंबे समय से मतदान सिमुलेशन मैं PHP में लिखा दिखाएंगे:

<?php 
    sleep(5); 
?> 
<b>OK!</b> 

इसके बजाय प्रक्रिया को sleep कुछ सेकंड देने की अनुमति देने के लिए, आप लूप में राज्य के परिवर्तनों के लिए आसानी से परीक्षण कर सकते हैं। और मनमाने ढंग से HTML तत्व भेजने की बजाय, आप डेटा वापस भेज सकते हैं, उदा। JSON नोटेशन में। मैं कल्पना नहीं कर सकता कि एएसपी.NET/C# में ऐसा करना मुश्किल होगा।

+0

मुझे आपके द्वारा उल्लेख की गई अंतिम चीज़ पर कुछ अच्छे ट्यूटोरियल मिलते हैं, कनेक्शन खोलने के लिए http अनुरोध प्राप्त करें। अब समस्या यह है कि मुझे नहीं पता कि यह कितना तेज़ होगा यदि मैं खुद को हर हिस्से लिखता हूं। मैं इसे बाद में आज भी कोशिश करने जा रहा हूं लेकिन इसमें काफी समय लग सकता है। इसके अलावा मुझे 4 मानक div की तरह मिल गई है जो पेज लोड होने पर आईडी प्राप्त करनी चाहिए। इसके बाद यह हर सेकेंड में अपडेट होता है, यह div की आईडी को देखता है और वहां सही मान डालता है। यह उन पैनी नीलामी की तरह है जो आप आजकल देखते हैं। वैसे भी आपकी प्रतिक्रिया के लिए धन्यवाद! उम्मीद है कि अधिक लोग प्रतिक्रिया करते हैं। – Julian

+0

@ जुलीयन - मुझे अभी भी यकीन नहीं है कि मैं आपको सही ढंग से समझता हूं। जावास्क्रिप्ट में डोम को मैनिपुलेट करना आजकल बहुत आसान है। यदि आवश्यक हो तो आप हमेशा नए प्रश्न पूछ सकते हैं, लेकिन एसओ पर यहां कई प्रश्न मौजूद हैं। और मैं अपने देश में पैसा नीलामी में भाग नहीं लेता हूं। ;) –

+0

हाँ, शायद यह सिर्फ मुझे है। मैं आमतौर पर एक सी # Winform डेवलपर हूं और वास्तव में अभी तक एचटीएमएल/जावास्क्रिप्ट सामान में नहीं है। लेकिन हमें जिस एप्लिकेशन को बनाने की जरूरत है वह एक पैसा नीलामी की तरह नहीं है, लेकिन आप हर सेकेंड के समान प्रकार के अपडेट के बारे में सोच सकते हैं। – Julian

3

WebSync फ्रोजन माउंटेन द्वारा आईआईएस और एएसपी.नेट के लिए एक पूर्ण स्केलेबल धूमकेतु सर्वर है। यह प्रति सर्वर नोड के हजारों ग्राहकों के साथ वास्तविक समय डेटा संचार का समर्थन करने के लिए आपके एप्लिकेशन स्टैक में निर्बाध रूप से एकीकृत करता है।

इसे देखें, एक सामुदायिक संस्करण स्वतंत्र रूप से उपलब्ध है।

5

PokeIn एएसपी.NET AJAX लाइब्रेरी में एक SendToAll फ़ंक्शन है।

+0

लाइब्रेरी स्वयं काफी महंगी है। – arviman

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