ajax联系人数,setInterval定时调用ajax实现在线人数统计

  • Post author:
  • Post category:其他


index页面把onLineCount.jsp给include进来,onLineCount.jsp每隔一段时间刷新一次从数据库中统计数据,很显然这个方法非常的错误,onLineCount.jsp每次刷新的同时index整个页面也要刷新,首页数据量大的情况下肯定不行。而且还出现了一个我更郁闷的问题

:用户a登录后页面显示a的相关信息,用户b

登录后应该显示b的相关信息,如果把刷新的间隔时间设的短假如10秒钟,那么在服务器反映慢的情况下,如果a

已经登录并显示a的内容,但是刚好在b登录的时候,a页面正好刷新,等b登陆成功后b的页面显示b的信息,但这个时候a的页面也显示了b的信息,如果我把这个间隔的时间设长,加入1分钟,即使服务器再慢1分钟应该反映的过来吧,这样就没有出现乱套的问题,如果间隔时间为10秒,服务器反映够快,也不会出现乱套的情况。

于是还得想办法,ajax以前经常听说,实际中也没用过那么就用这个试一下,结果发现还真的像传说中的那么好用

Count.jsp

language=”java” %>

import=”cn.sh.guanghua.mediamex.common.CountServlet”%>

import=”cn.sh.guanghua.mediamex.db.dataunit.MonitorServer”%>

import=”cn.sh.guanghua.mediamex.common.Db”%>

import=”java.util.List”%>

import=”cn.sh.guanghua.monitor.SnmpValueObject”%>

import=”java.util.Hashtable”%>

import=”cn.sh.guanghua.mediamex.common.OnlineCounter”%>

long  monitorServer_Id=1;

MonitorServer monitorServer=(MonitorServer)

Db.monitorServer().getObject(monitorServer_Id);

String strIp;

String strCommunity;

long port;

long type;

long timeout;

long version;

strIp=monitorServer.getMonitorServerIp();

strCommunity=monitorServer.getMonitorServerCommunity();

port=monitorServer.getMonitorServerSnmpPort();

type=monitorServer.getMonitorServerType();

timeout=monitorServer.getMonitorServerTimeout();

version=monitorServer.getMonitorServerVersion();

List

result=Db.monitorItem().getSnmpValue(type,port,strIp,strCommunity,version,timeout);

SnmpValueObject snmp=null;

//onlineUsercount

// int

onlineUserCount=OnlineCounter.getOnline();

int

onlineUserCount=Db.sivaUsers().geOnlineCount();

%>

var

getOnline=setInterval(“send_request()”,2000);

var http_request = false;

function send_request()

{//初始化、指定处理函数、发送请求的函数

http_request = false;

//开始初始化XMLHttpRequest对象

if(window.XMLHttpRequest) { //Mozilla

浏览器

http_request = new XMLHttpRequest();

if (http_request.overrideMimeType)

{//设置MiME类别

http_request.overrideMimeType(‘text/xml’);

}

}

else if (window.ActiveXObject) { //

IE浏览器

try {

http_request = new

ActiveXObject(“Msxml2.XMLHTTP”);

} catch (e)

{

try {

http_request = new

ActiveXObject(“Microsoft.XMLHTTP”);

} catch (e)

{}

}

}

if (!http_request) { //

异常,创建对象实例失败

window.alert(“不能创建XMLHttpRequest对象实例.”);

return false;

}

http_request.onreadystatechange

= processRequest;

//

确定发送请求的方式和URL以及是否同步执行下段代码

http_request.open(“post”,

‘getCount.jsp’,

true);

http_request.send(null);

}

// 处理返回信息的函数

function processRequest()

{

if

(http_request.readyState == 4) { // 判断对象状态

if (http_request.status == 200) { //

信息已经成功返回,开始处理信息

//alert(http_request.responseText);

onlineCount.innerHTML=http_request.responseText;

} else { //页面不正常

alert(“您所请求的页面有异常。”);

}

}

}

文章转载请注明来源。新辉网主页 > 网页基础 > Javascript/Ajax >

标题:setInterval定时调用ajax实现在线人数统计

地址:http://www.a55.com.cn/a/1662.html

关键词:setInterval定时调用ajax实现在线人数统计_无梦