This is split between AJAX and ASP but should go here... - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

This is split between AJAX and ASP but should go here...

[b][red]This message was edited by aaronjones3593 at 2007-3-9 2:1:24[/red][/b][hr]
I'm making a web chat application and I'm a bit stumped on something. It uses a database to keep track of who's online, and I have an AJAX form thing that gets the contact list from list.asp every 5 seconds; like so...

main.asp
[code]


image

Loading the contact list...




var AJAXObject = null;
try { AJAXObject = new XMLHttpRequest(); } catch (e) { /* Not using Firefox, Safari or Opera */ }
try { AJAXObject = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { /* Not using Internet Explorer */ }

var Timer = 2000;

function GetContactList()
{
document.getElementById("SendFormSeperator").style.display = "none";
document.getElementById("SendTextForm").style.display = "none";
if (AJAXObject != null)
{
var LoginHandle = "<%=Session("LoginHandle")%>"
AJAXObject.onreadystatechange = stateChanged();
AJAXObject.open("GET", "./list.asp?sid=" + Math.random() + "&LoginHandle=" + LoginHandle, true);
AJAXObject.send(null);

window.setTimeout("GetContactList()", Timer);
Timer = 5000
}
else
{
alert("Your browser does NOT support AJAX!")
}
}

function stateChanged()
{
if (AJAXObject.readyState == 4)
{
var ResponseText = AJAXObject.responseText;
document.getElementById("ContactList").innerHTML = ResponseText;
if (ResponseText.indexOf("No online users") == -1)
{
document.getElementById("SendFormSeperator").style.display = "";
document.getElementById("SendTextForm").style.display = "";
}
}
}

[/code]

list.asp
[code]
<%
Dim adoCon
Dim Recordset
Dim strSQL

Set adoCon = Server.CreateObject("ADODB.Connection")
Set Recordset = Server.CreateObject("ADODB.Recordset")

adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./db/users.mdb")

strSQL = "SELECT UserID,CurrentStatus,DisplayName FROM WCAUsers WHERE CurrentStatus <> 'offline'"
strSQL = strSQL & " AND LoginHandle <> '" & Request.QueryString("LoginHandle") & "'"
Recordset.Open strSQL, adoCon

IF Recordset.EOF Then
Response.Write ""
End If

Do While Not Recordset.EOF
Response.Write ""
Recordset.MoveNext
Loop

Recordset.Close
Set Recordset = Nothing
adoCon.Close
Set adoCon = Nothing
%>
No online users
" & _
"image " & _
Recordset("DisplayName") & "
[/code]

as you can see in list.asp it gets the users where their status is not offline... but some people just close the window without signing out first. I don't want something that will tell them to sign out first when they click the X button ot anything; I want something that I can do in AJAX/ASP to check on the client say like every 30 seconds or so... and if there is no response (closed the window, anyone?) then force sign them out (update database status to offline).

I'm a bit stuck on thinking how I could do/implement this... any ideas?

Thanks in advance,

Sign In or Register to comment.