当前位置: 首页 > 知识库问答 >
问题:

Websocket只允许200个连接

龚寂弦
2023-03-14

我只是在我的服务器上实现了一个简单的Websocket系统。我试图测试最大连接数,我做了以下代码:

for(var i=0; i<300; i++){
    websocket();
}

function websocket() {
    var wsUri = "ws://" + document.location.host + document.location.pathname + "websocket";
    var ws = new WebSocket(wsUri);
    ws.onopen = function () { ws.send("User connected"); };
    ws.onmessage = function (e) { writeToPage(e.data); };
    ws.onclose = function () { writeToPage("User disconnected"); };
}

每次我运行它时,前200个用户会被连接,之后,所有请求都被调用onclose()。在web控制台中,我得到以下错误:

Mozilla:加载页面时,与ws://localhost:8080/myapp/websocket的连接中断

Chrome:WebSocket握手时出错:“Connection”标头值不是“upgrade”:upgrade close

我的web应用程序部署在Tomcat 7.0.52上。我读到默认情况下它只允许200个线程,所以我在conf/server.xml中为connectorexecutor添加maxthreads=“1000”,但结果是相同的。

在web.xml中,我添加了:

<context-param>
    <param-name>org.apache.tomcat.websocket.executorMaxSize</param-name>
    <param-value>1000</param-value>
</context-param>

我尝试用ws://echo.websocket.org打开300个websockets,同样只有200个有效。

这是服务器允许的最大连接数吗?这是我可以作为客户端创建的websockets的最大数量吗?这是测试重载的好方法吗?我怎样才能增加数目?

共有1个答案

卫景明
2023-03-14

经过大量研究,我发现maxthreads=“1000”实际上解决了这个问题,但是Mozilla只允许200个套接字。所以我不得不从多台客户端机器上再次进行测试。

FireFox中允许的websocket连接的默认最大数量是200。来源:https://developer.mozilla.org/en/docs/websockets#gecko_7.0

 类似资料:
  • 问题内容: 我想使我的网站一次只允许一个会话。例如,假设用户已经登录到我在firefox上的网站,如果该用户再次登录到另一台浏览器(例如同一台计算机或另一台计算机上的Opera),则Firefox上的会话将被破坏。但是,如果仍为一届会议,则有关Firefox的会议仍将保留。我可以知道该怎么做吗?我正在使用php和apache。谢谢。 问候。本杰明 问题答案: 我建议您做这样的事情: 假设用户“ A

  • #include <stdio.h> #include <pthread.h> int a = 0; int b = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(1); } } void *thread2_fu

  • 问题内容: 我正在使用RxJava计算Android中某些传感器数据的标准化自动相关性。奇怪的是,我的代码引发了一个异常(“ java.lang.IllegalStateException:只允许一个订阅者!”),我不确定该怎么做:我知道GroupedObservables订阅多个订阅者时可能会抛出此异常,但是我不认为我在任何地方都在使用这种东西。 在下面,您找到(最有可能)触发异常的方法: 这是

  • 问题内容: 我正在尝试用JavaFX制作数独游戏,但我不知道如何只允许输入一个字母。对此的答案是调用文本字段并执行以下操作: 上面的方法不适用于复制粘贴…或大量其他事情,等等。像这样使用按键监听器似乎是一个AWFUL想法。一定有更好的东西吗?是否存在文本字段的属性,仅允许输入某些字符,或仅允许输入一定数量的字符? 谢谢! 问题答案: 您可以使用来执行此操作。该可以修改都在文本字段做,如果有一个与之

  • 我在我的Web服务器(Debian/Nginx/Gunicorn)上运行Redis进行会话存储,我有理由相信我的Redis服务器遭到了黑客攻击。这绝对是可能的,因为如果我在另一台机器上针对web服务器运行命令“redis cli-h(HOST IP)”,我就可以进入控制台并运行命令。我有两个问题。首先,如果我在我的iptables文件中添加一个新的部分,如下所示,我会正确地阻止除Web服务器本身之