WebSocket - 最大连接数 - 请求不到连接 - 连接数 - 连接

Candy_2014 2014-10-13 03:18:25

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Testing websockets</title>
</head>
<body>
<div>
<input type="submit" value="Start" onclick="start()" />
</div>
<div id="messages"></div>

<script type="text/javascript">

for (i = 1; i <= 250; i++)
{
document.getElementById('messages').innerHTML += i +'<br />';
var webSocket = new WebSocket('ws://localhost:8080/WebSocket/ws/websocket');

webSocket.onerror = function(event) {
document.getElementById('messages').innerHTML += '<br />' + event.data;
};

webSocket.onopen = function(event) {
document.getElementById('messages').innerHTML += 'Connection established <br />';
};

webSocket.onmessage = function(event) {
document.getElementById('messages').innerHTML += '<br />' + event.data;
};

function start() {
webSocket.send('hello');
return false;
}
}
</script>

</body>
</html>



上面是我的页面代码,js中写了循环,在17行时请求websocket连接
下面是服务器代码,


public class webSocketServletDemo extends WebSocketServlet {

private static final long serialVersionUID = 1L;

int a = 0;
@Override
protected StreamInbound createWebSocketInbound(String arg0,HttpServletRequest request) {
++a;

System.out.println(Runtime.getRuntime().maxMemory()/(1024*1024));
long freeMe=(Runtime.getRuntime().freeMemory())/(1024*1024);

System.out.println(freeMe);
System.out.println("request : " +request);

return new webSocketMessage(a+"");

}
}


public class webSocketMessage extends MessageInbound {

private static Vector<MessageInbound> v = new Vector<MessageInbound>();

private String id = "";
public webSocketMessage(String id){
this.id = id;
}

@Override
protected void onOpen(WsOutbound outbound) {
v.add(this);
System.out.println("当前进入用户ID号 : "+id +" 当前共有用户数 : "+v.size());
}

@Override
protected void onClose(int status) {
super.onClose(status);
System.out.println("onClose - 事件被触发 , status : " + status);
}

@Override
protected void onTextMessage(CharBuffer msg) throws IOException {
System.out.println(this.id+"对"+v.get(1)+"说"+msg);

MessageInbound mib = (MessageInbound)v.get(1);
CharBuffer buffer = CharBuffer.wrap(msg);
mib.getWsOutbound().writeTextMessage(buffer);
}

@Override
protected void onBinaryMessage(ByteBuffer arg0) throws IOException {

}
}



目前我只能获取到200个websocket链接,在获取第201个时
执行 - var webSocket = new WebSocket('ws://localhost:8080/WebSocket/ws/websocket');
服务器没有任何输出,好像压根就没执行到servlet.

java Jre内存是足够的,

这种问题 我应该从哪里开始下手解决,
...全文
13235 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
笑沃 2016-09-07
  • 打赏
  • 举报
回复
我知道什么原因了,经过本人亲身经历,这是与浏览器的限制有关系!IE5个。chrome250+左右,火狐200+左右!
runnersun 2016-09-06
  • 打赏
  • 举报
回复
正在研究此问题,需要学习,顶!
勇士小碎步丶 2016-04-15
  • 打赏
  • 举报
回复
websocket的一对多的连接,会吗?我想做一个在线客服系统。不知道怎么使一个客服端对应多个客户端 并且在不同的窗口下进行沟通 。求赐教!
buddha17 2015-03-06
  • 打赏
  • 举报
回复
在tomcat前加个服务器,运行netty,通过netty连接pc
Candy_2014 2014-10-14
  • 打赏
  • 举报
回复
引用 1 楼 attilax 的回复:
应该是连接数溢出了... 你要更换个web server了...
我在监测浏览器发出的请求时,我发现浏览器只请求了200次, 换不同的浏览器也是只能请求200次 如果同时开多个浏览器访问web server时,也只能连接200个,其他都是在阻塞状态,只有释放了当前的200个连接,剩下的浏览器才会继续请求200个连接
attilax 2014-10-14
  • 打赏
  • 举报
回复
引用 2 楼 fabaoyi 的回复:
[quote=引用 1 楼 attilax 的回复:] 应该是连接数溢出了... 你要更换个web server了...
我在监测浏览器发出的请求时,我发现浏览器只请求了200次, 换不同的浏览器也是只能请求200次 如果同时开多个浏览器访问web server时,也只能连接200个,其他都是在阻塞状态,只有释放了当前的200个连接,剩下的浏览器才会继续请求200个连接[/quote] 应该是web server默认定义的连接数是200,,你可以修改配置..但是小型webserver可能不能修改配置,要使用企业级的web server,例如jboss,,, tomcat只是个小型webserver,不能大并发访问
attilax 2014-10-13
  • 打赏
  • 举报
回复
应该是连接数溢出了... 你要更换个web server了...

24,923

社区成员

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

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