浏览 1038 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-14
不要鄙视我哟。哈哈 源码如下: 一共三个jsp index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>聊天室</title>
<script type="text/javascript" src="jquery-1.2.5.pack.js"></script>
</head>
<body>
<div id="content" style="font-size: 12px;overflow-y:auto ;height: 300px;width: 300px;border: 1px solid #CCC;padding: 10px;float: left;"></div>
<div id="member" style="overflow-y:auto ;height: 300px;width: 100px;border: 1px solid #CCC;padding: 10px;"></div>
<textarea rows="5" cols="35" id="say"></textarea><br/><input onclick="send();" type="button" value="发送"/>
<script type="text/javascript">
function inChat(){
$.ajax({
type: "POST",
url: "member.jsp",
success: function(msg){
getMember();
}
});
}
function send(){
$.ajax({
type: "POST",
url: "content.jsp",
data: "say="+$("#say").val(),
success: function(msg){
getContent();
$("#say").val("");
}
});
}
getContent();
getMember();
window.setInterval(function(){getContent();getMember();},3000);
function getContent(){
$.ajax({
type: "POST",
url: "content.jsp",
success: function(msg){
$("#content").html(msg);
}
});
}
function getMember(){
$.ajax({
type: "POST",
url: "member.jsp",
success: function(msg){
$("#member").html(msg);
}
});
}
</script>
</body>
</html>
member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
if(application.getAttribute("member")==null)
application.setAttribute("member",new java.util.HashSet());
java.util.Set member=(java.util.Set)application.getAttribute("member");
member.add(request.getRemoteAddr());
%>
<% for(Object o:member){%>
<%=o%><br/>
<%}%>
content.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
if(application.getAttribute("content")==null)application.setAttribute("content","");
%>
<%
if(request.getParameter("say")!=null)
application.setAttribute("content",application.getAttribute("content")+"<br/>"+request.getRemoteAddr()+": "+request.getParameter("say"));
%>
<%=application.getAttribute("content")%>
把这三个页面和jquery-1.2.5.pack.js包放在WebContent下就可以了,有乱码问题的话加个编码过滤器就可以了。 我在web.xml里面加了spring现成的过滤器 <filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-18
运行不了。。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-18
原理是这个,真跑起来估计几个人就垮了。。。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-19
ayeah 写道 原理是这个,真跑起来估计几个人就垮了。。。
呵呵。你试过吗? |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-20
ayeah 写道 原理是这个,真跑起来估计几个人就垮了。。。
性能的瓶颈在于每次执行getContent都会把服务器上所有的对话内容都抓下来,人多是一个导致性能下降的原因,但是就算只有一个人,说的话太多也会导致性能下降。 如果getContent可以做到只抓取最新的对话内容,性能应该可以稳定很多,一些比较实用的基于ajax的聊天工具大约是这样操作的 |
|
| 返回顶楼 | |
|
最后更新时间:2008-06-22
ydy88 写道 ayeah 写道 原理是这个,真跑起来估计几个人就垮了。。。
性能的瓶颈在于每次执行getContent都会把服务器上所有的对话内容都抓下来,人多是一个导致性能下降的原因,但是就算只有一个人,说的话太多也会导致性能下降。 如果getContent可以做到只抓取最新的对话内容,性能应该可以稳定很多,一些比较实用的基于ajax的聊天工具大约是这样操作的 说的对。 当前的聊天内容+聊天记录。真正要做好的话还是需要做很多优化的。 这段时间公司在做一个iframe的长连接聊天室。感觉还是长轮询比较好,虽然实时性没有长连接好,但是没有连接太多造成的性能瓶颈。个人还是比较支持长轮询的方式。 |
|
| 返回顶楼 | |
|
最后更新时间:前天
把程序打包下发过来吧
|
|
| 返回顶楼 | |





