javascript - Websocket 只允许 200 个连接

标签 javascript websocket

我刚刚在我的服务器上实现了一个简单的 Websocket 系统。我正在尝试测试最大连接数,我编写了以下代码:

Javascript:

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 握手期间出错:“连接” header 值不是“升级”:升级关闭

我的 Web 应用程序部署在 Tomcat 7.0.52 上。我读到默认情况下它只允许 200 个线程,所以我在 conf/server.xml 中添加了 maxThreads="1000"ConnectorExecutor 但结果是一样的。

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 个 websocket,但同样只有 200 个有效。

这是我的服务器允许的最大连接数吗? 这是我作为客户端可以创建的最大 websocket 数量吗? 这是测试重负载的好方法吗? 如何增加数量?

最佳答案

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

Default maximum number of websocket connections allowed in FireFox is 200. Source: https://developer.mozilla.org/en/docs/WebSockets#Gecko_7.0

关于javascript - Websocket 只允许 200 个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889113/

相关文章:

使用 WebSockets 的后端服务器的 Apache 重定向规则

python - Websocket 客户端没有收到任何消息

javascript - 在闭包中设置变量

javascript - 如何从 Internet Explorer 中的剪贴板获取 base64 编码图像?

javascript - OpenLayers 4 城市坐标中心 map

javascript - 如何使用 JavaScript 或 jQuery 下载文件

javascript - 尝试发出 WebSocket 请求时,在 aync 任务中 HttpContext.Current.Session 为 null

django - 如何在生产 Pythonanywhere 中运行 WebSocket (django-channels)?

javascript - 如何使用 Bootstrap 单击可点击模态 div 内的模态按钮

javascript - 使用 *ngIf 中的 oidc-client 在 Angular 中实现 isLoggedIn() 函数