哪位提供一下长连接的代码,要jsp的最好

pccastle 2008-05-24 09:03:55
想做一个聊天室,需要用这个东西。能否提供个思路。
我从网上找到的代码,本地测试还行,一发到服务器上就不行了。

<%
for(int i=1;i<=1000;i++){
out.println(i+"<br/>");
out.flush();
Thread.sleep(100);
}
%>

服务器是Tomcat 5.5 机器是Win2003 Server
有点奇怪,本地可以用的。。。 到了服务器上就不行了。。。

...全文
89 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pccastle 2008-05-24
  • 打赏
  • 举报
回复
好了,再次感谢,我那个帖子的分也给老大,这个我就不加分了。呵呵。

感谢老大了。
老紫竹 2008-05-24
  • 打赏
  • 举报
回复
我记得servlet有个默认的输出缓冲区,如果你不能达到他的大小,会自动缓冲的,这也是我们有时可以调用
out.clearBuffer();
然后
response.setContentType()
的原因。这个垃圾代码,就是填充这个缓冲区,让他输出。后面就是我们真正关心的输出了。
我也不太清楚是否有其它方法不加入这个垃圾代码。
pccastle 2008-05-24
  • 打赏
  • 举报
回复
谢谢,我刚才已经测试成功了,对了,那个
for (int i = 0; i <= 512; i++) {
out.print(" ");
}
out.flush();
// 加上这些代码看看

干啥用的,我去掉后好像一开始几个数字显示不正确,是一下子出来的,但后面马上就正常了,什么原因呢?
麻烦老大再给解释一下。。。
老紫竹 2008-05-24
  • 打赏
  • 举报
回复
改成off 看看吧,应该是这个问题。
这个gzip会将输出内容先进行压缩,然后再发送到浏览器,浏览器内部解压缩后再显示。造成数据发送的不连续。
一般情况下,这个可以提高网页的传输效率,毕竟压缩了。但遇到这种情况就只能自己选择了。鱼和熊掌不能兼得、
<Connector
port="80"
maxHttpHeaderSize="8192"
maxThreads="50"
minSpareThreads="20"
maxSpareThreads="30"
enableLookups="false"
redirectPort="443"
acceptCount="50"
connectionTimeout="20000"
disableUploadTimeout="true"
compression="off"
compressionMinSize="256"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/x-javascript,text/javascript,text/css"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
pccastle 2008-05-24
  • 打赏
  • 举报
回复
是这一部分吗?给看一下
<Connector
port="80"
maxHttpHeaderSize="8192"
maxThreads="50"
minSpareThreads="20"
maxSpareThreads="30"
enableLookups="false"
redirectPort="443"
acceptCount="50"
connectionTimeout="20000"
disableUploadTimeout="true"
compression="on"
compressionMinSize="256"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/x-javascript,text/javascript,text/css"
URIEncoding="UTF-8"
useBodyEncodingForURI="true" />
zhj92lxs 2008-05-24
  • 打赏
  • 举报
回复
帮不上忙
pccastle 2008-05-24
  • 打赏
  • 举报
回复
我马上去看看
老紫竹 2008-05-24
  • 打赏
  • 举报
回复
内容是一下子出来的,而不是连续的!!

恩,是被压缩过的可能性很大,你去看看吧!
老紫竹 2008-05-24
  • 打赏
  • 举报
回复
难道是你的服务器启用了gzip压缩,去看看你的
tomcat/conf/server.xml

里面是不是启用了 gzip 功能,大致是 compression="on" 这个样子,
改成 compression="false"
看看!
pccastle 2008-05-24
  • 打赏
  • 举报
回复
谢谢,还是不行。
完整代码如下
<%@page contentType="text/html;charset=UTF-8"%>
<%
for (int i = 0; i <= 512; i++) {
out.print(" ");
}
out.flush();
// 加上这些代码看看
for (int i = 1; i <= 1000; i++) {
out.println(i + "<br/>");
out.flush();
Thread.sleep(10);// 我缩短了时间
}
%>


我本机运行是正常的,可是到服务器上就不行了,内容是一下子出来的,而不是连续的!!

奇怪了。大家帮忙啊...
解决了明天此帖再加100分
老紫竹 2008-05-24
  • 打赏
  • 举报
回复
看代码没问题啊?前面加上
<%
for(int i=0;i<=512;i++){
out.print(" ");
}
out.flush();
// 加上这些代码看看

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧