Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket 页面打开的web套接字数量是否有限制(实用或其他限制)?_Websocket - Fatal编程技术网

Websocket 页面打开的web套接字数量是否有限制(实用或其他限制)?

Websocket 页面打开的web套接字数量是否有限制(实用或其他限制)?,websocket,Websocket,我们非常喜欢带有web套接字的异步模型。在我们的一些应用程序中,我们在框架中实现小部件(通常一个页面上有10或20个小部件)。每个小部件打开一个web套接字以接收状态更改通知 一个页面可以打开的web套接字的数量是否有任何最佳做法、实际限制或硬限制?这取决于浏览器 见: 可能打开的WebSocket的最大数量似乎是由浏览器实现定义的,很难找到数字 在Chromium源代码(Google Chrome for Linux)中,我可以看到每个主机最多30个,总共256个 // Limit o

我们非常喜欢带有web套接字的异步模型。在我们的一些应用程序中,我们在框架中实现小部件(通常一个页面上有10或20个小部件)。每个小部件打开一个web套接字以接收状态更改通知


一个页面可以打开的web套接字的数量是否有任何最佳做法、实际限制或硬限制?

这取决于浏览器

见:

可能打开的WebSocket的最大数量似乎是由浏览器实现定义的,很难找到数字

在Chromium源代码(Google Chrome for Linux)中,我可以看到每个主机最多30个,总共256个

// Limit of sockets of each socket pool.
int g_max_sockets_per_pool[] = {
  256,  // NORMAL_SOCKET_POOL
  256   // WEBSOCKET_SOCKET_POOL
};

// Default to allow up to 6 connections per host. Experiment and tuning may
// try other values (greater than 0).  Too large may cause many problems, such
// as home routers blocking the connections!?!?  See http://crbug.com/12066.
//
// WebSocket connections are long-lived, and should be treated differently
// than normal other connections. 6 connections per group sounded too small
// for such use, thus we use a larger limit which was determined somewhat
// arbitrarily.
// TODO(yutak): Look at the usage and determine the right value after
// WebSocket protocol stack starts to work.
int g_max_sockets_per_group[] = {
  6,  // NORMAL_SOCKET_POOL
  30  // WEBSOCKET_SOCKET_POOL
};
在Firefox配置中,(转到
about:config
并搜索
network.websocket
),我可以看到每个主机最多有6个持久连接,总共有200个,但显然是持久连接限制,因此只有200个限制适用

关于方法。。。 我的建议是每页/页签使用一个。如果您将小部件作为框架,请使用
.postMessage
()在框架和主页之间进行通信,并让主页通过单个连接与服务器进行通信。使用发布者/订阅者模型允许不同的小部件订阅特定事件


有这么多的连接是对浏览器和服务器资源的浪费。

非常有用的答案。关于postMessage,小部件可能不在我们控制代码的页面上运行(这些是我们作为第三方的第三方小部件)。目前,我们每个小部件/页面使用一个web套接字,所以我认为只要我们对小部件数量不感兴趣,我们就可以了。哦,那么你没有选择:)websocket多路复用有一个草案,但它没有进一步开发,可能是因为http 2.0已经包含多路复用。因此,希望将来同一台服务器有多个连接不会成为问题。现在Chrome允许255个websocket连接。