रहे हैं एएसपीनेट सदस्यता प्रदाताओं में ऐसा करने के लिए, विशेष रूप से, IsUserOnline() और countUsersOnline() जैसी कुछ। इन तरीकों के साथ एकमात्र समस्या यह है कि वे वास्तव में लंगड़ा हैं। वे सदस्यता प्रदाता की LastActivityDate() और एक विंडो पर निर्भर करते हैं जिसे आप web.config में सेट कर सकते हैं। दूसरे शब्दों में, उपयोगकर्ता को ऑनलाइन माना जाता है यदि सदस्यता प्रदाता के साथ उनका अंतिम मुठभेड़ और web.config में टाइम विंडो की समयसीमा समाप्त नहीं हुई है।
हम इस scenairo ले लिया है और यह एक धूमकेतु सर्वर की स्थापना, और वेब सर्वर हर दस मिनट पिंग द्वारा हमारे लिए काम कर दिया। जब वेब सर्वर पिंग किया जाता है, तो यह सदस्यता प्रदाता के LastActivityDate को अद्यतन करता है।
हम गतिविधि विंडो को 12 मिनट, साथ ही सत्र टाइमर पर सेट करते हैं। यह हमें यह निर्धारित करने की अनुमति देता है कि लगभग दस मिनट की सटीकता के लिए ऑनलाइन कौन है।
यहां वेब में पंक्ति है।config:
function getData() {
$.getJSON("/Account/Timer", gotData);
}
// Whenever a query stops, start a new one.
$(document).ajaxStop(getData, 600000);
// Start the first query.
getData();
यहाँ हमारे सर्वर कोड है::
<membership userIsOnlineTimeWindow="12">
यहाँ jQuery धूमकेतु सर्वर है
public JsonResult Timer()
{
MembershipUser user = Membership.GetUser(User.Name);
user.LastActivityDate = DateTime.Now;
Membership.UpdateUser(user);
// You can return anything to reset the timer.
return Json(new { Timer = "reset" }, JsonRequestBehavior.AllowGet);
}
स्रोत
2010-07-06 16:40:44
मैं यह सर्वर कोड कहां जोड़ूं? – DoIt