本人正在学习JSP,在阶段项目开发中遇到两个问题:
1.用户登录“在线聊天室”可以聊天,用的是application实现在的,但是如何实现无空隙刷新页面显示新消息呢?我现在用的是<meta http-equiv="refresh" content="3" />,每次刷新页面闪得非常厉害,看着头晕。
2.当用户非法退出聊天室的时候(比如关机,直接关闭页面等),如何捕获是否确认退出的提示?
请各位高手指教
1.用户登录“在线聊天室”可以聊天,用的是application实现在的,但是如何实现无空隙刷新页面显示新消息呢?我现在用的是<meta http-equiv="refresh" content="3" />,每次刷新页面闪得非常厉害,看着头晕。
2.当用户非法退出聊天室的时候(比如关机,直接关闭页面等),如何捕获是否确认退出的提示?
请各位高手指教
2.?
个人愚见 仅供参考
即可,如下:<body onbeforeunload=return(false)>就能提示是否关闭。
我现在用的是<meta http-equiv="refresh" content="3" />,每次刷新页面闪得非常厉害,看着头晕
你可以设置用户提交消息的时候刷新页面。这样的话,每发布一条信息,页面都会刷新。
用推技术可以实现实时更新(有消息来才更新),但是麻烦一点,要自己写一个WEB服务器。
http://www.w3school.com.cn/ajax/ajax_browsers.asp
另外提供一个很好的学习网站:http://www.w3cschool.com.cn
<html>
<body><script type="text/javascript">function ajaxFunction()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{ // Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{ try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
}
</script><form name="myForm">
用户: <input type="text" name="username" />
时间: <input type="text" name="time" />
</form></body>
</html>
建议使用dwr或jquery。
第二个问题,如何处理用户的非正常退出聊天系统,我的思路是这样的:用户登录时可以拿到用户的session信息,然后以map形式存储用户与session的关系,把这个map放入application
然后设定特定时间在这个map里遍历,看有没有人的session已经丢失,丢失的话,移除就OK了。
当然,正常退出的话最好也提供方法,从applicatioing的map种移除用户信息。
对于第二个问题,我实现的思路也是这样的,合法退出的时候判断application中存在当前用户,然后再remove。关键是非法退出要怎样获取是否退出的提示,用户选择是则remove,选择否则回到聊天室???
<body onload="getAjaxOutput()">
<div id="mydiv"><br>
</div>
</body> <script type="text/javascript">
var xmlHttpRequest;
function createXmlHttpRequest(){
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
function getAjaxOutput()
{
var url = "testMessage.jsp"; xmlHttpRequest = createXmlHttpRequest();
xmlHttpRequest.onreadystatechange = AfterAjax;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
window.setTimeout("getAjaxOutput()",1000);
}
function AfterAjax()
{
if(xmlHttpRequest.readyState == 4){
if(xmlHttpRequest.status == 200){
document.getElementById("mydiv").innerHTML=xmlHttpRequest.responseText;
document.body.scrollTop=2000;
}
}
}
</script>
自己可以试试看