问题标签 [persistent-connection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
414086 浏览

html - 浏览器中的最大并行 HTTP 连接数?

我正在创建一些与 HTTP 服务器(彗星、反向 AJAX 等)的暂停连接。它工作正常,但我看到浏览器只允许同时挂起两个到给定域的连接。因此,如果用户在浏览器的 Tab1 中查看我的网站,然后还尝试在 Tab2 中加载它,他们已经用完了两个允许的与我的网站的连接。

我想我可以做一些通配符域的事情,让我的 HTTP 服务器将任何地址解析到我的站点,例如:

所以:

all 仍然指向 ( www.example.com/webapp) 但浏览器认为它们是不同的域,所以我没有遇到 2 个连接限制。这是真的?

即使这真的 - 每个浏览器的活动连接数是否有任何限制,跨所有域?假设我使用上面的方案 - 例如,Firefox 在任何给定时间只允许 24 个并行连接吗?就像是:

我刚刚选择了 24 个连接/Firefox 作为示例。

0 投票
4 回答
3138 浏览

java - 如何设计具有许多持久连接的服务器

我正在设计一个应用程序,其中许多客户端连接到中央服务器。该服务器保持这些连接,每半小时发送一次保持连接。服务器有一个嵌入式 HTTP 服务器,它为客户端连接提供接口(例如http://server/isClientConnected?id=id)。我想知道解决此问题的最佳方法是什么。我目前的实现是在Java中,我只有一个以ID为键的Map,但是为每个连接启动一个线程,我不知道这是否真的是最好的方法。任何指针将不胜感激。
谢谢,
艾萨克·沃勒

0 投票
4 回答
2093 浏览

java - Flash 客户端和 Java 服务器之间的持久连接

我是 Flash 新手。我打算在 Flash 中创建一个游戏客户端(在浏览器中运行),它需要与用 Java 编写的服务器通信。客户端和服务器之间的连接需要是持久的。

我知道 XMLSocket - 这是唯一的方法吗?有什么建议吗?

谢谢!

0 投票
2 回答
5475 浏览

vb.net - vb.net如何检查网络驱动器是否被持久映射

我使用以下代码在系统上布局网络驱动器。我想为持久性添加第三列,但在 vb.net 中我不知道如何检查驱动器是否具有持久性映射。有什么建议么?

0 投票
3 回答
2439 浏览

asynchronous - Tornado 网络和持久连接

如何在 TornadoWeb 中编写支持持久连接的 Http 服务器。

我的意思是能够在不关闭连接的情况下接收许多请求并回答它们。它实际上是如何异步工作的?

我只想知道如何编写处理程序来处理持久连接。它实际上是如何工作的?

我有这样的处理程序:

完成时执行调用回调。

我的假设是否正确,即 post 将被多次调用,并且对于一个连接计数将随着来自客户端的每个 httprequest 而增加?但是对于每个连接我都会有单独的计数值?

0 投票
3 回答
3936 浏览

python - Tornado Web 框架 Mysql 连接处理

我最近一直在探索 Tornado Web 框架,以便为许多不同的客户端提供许多一致的连接。

我有一个请求处理程序,它基本上采用 RSA 加密字符串并对其进行解密。解密的文本是一个 XML 字符串,由我编写的 SAX 文档处理程序解析。一切正常,执行时间(每个 HTTP 请求)大约为 100 毫秒(包括解密和解析)。

XML 包含用户的用户名和密码哈希。我想连接到 MySQL 服务器以验证用户名是否与应用程序提供的密码哈希匹配。

当我基本上添加以下代码时:

执行 HTTP 请求所需的时间高达 4 - 5 秒!我相信这是在连接到 MySql 数据库服务器本身时发生的。

我的问题是如何加快速度?我可以在全局范围内声明 MySQL 连接并通过创建新游标在请求处理程序中访问它,还是会因为 Tornado 的异步设计而遇到并发问题?

基本上,我怎么能不必每次 Http 请求都与 MySQL 服务器建立新连接,所以它只需要几分之一秒而不是几秒来实现。

另外,请注意,SQL 服务器实际上与 Tornado Web 服务器实例在同一台物理机器上

更新

我只是通过分析器运行了一个简单的 MySQL 查询,下面的代码相同。

单独执行对“connections.py”初始化函数的调用需要 4.944 秒。这似乎不对,是吗?

更新 2

我认为使用一个连接运行(甚至使用非常简单的数据库连接池运行几个连接)将足够快以处理我期望的每个 tornado Web 服务器实例的吞吐量。

如果 1,000 个客户端需要访问一个查询,典型的查询时间是数千秒,最不幸的客户端只需等待一秒钟即可检索数据。

0 投票
1 回答
18233 浏览

java - 如何有效地重用 HttpClient 连接?

我非常频繁地(>= 1/秒)对 API 端点执行 HTTP POST,我想确保我有效地执行此操作。我的目标是尽快成功或失败,特别是因为我有单独的代码来重试失败的 POST。有一个很好的HttpClient 性能提示页面,但我不确定详尽实施它们是否会带来真正的好处。这是我现在的代码:

禁用对陈旧连接的检查是否有意义?我应该考虑使用MultiThreadedConnectionManager吗?当然,实际的基准测试会有所帮助,但我想首先检查我的代码是否在正确的轨道上。

0 投票
1 回答
8530 浏览

php - MySQL 持久连接

我有 10 个应用程序服务器和 1 个 mysql 数据库。我想为 mysql 做连接池,但是仅仅启用 mysql_pconnect() 是行不通的,因为它会导致一些服务器比其他服务器拥有更多的连接。

这种情况的最佳解决方案是什么..?

0 投票
4 回答
19791 浏览

php - PHPMailer 中的持久 SMTP 连接

如何在 PHPMailer 中启用持久 SMTP 连接?

我会发送很多电子邮件,因此通过持久连接可能会获得性能提升。

0 投票
1 回答
1721 浏览

jquery - 在设置彗星代码方面需要帮助

有谁知道一种方法,或者可能认为可以将 Node.js 与 Nginx http 推送模块连接起来,以保持客户端和浏览器之间的持久连接。

我是彗星的新手,所以只是不了解出版等,也许有人可以帮助我。

到目前为止我设置的内容如下。我下载了 jQuery.comet 插件并设置了以下基本代码:

客户端 JavaScript

从中我可以理解的是,客户端将继续收听 url,然后是 /broadcast/sub=getIt。当有消息时,它将触发 updateFeed。

非常基本且易于理解的 IMO。

Nginx http 推送模块配置

default_type 应用程序/八位字节流;发送文件;keepalive_timeout 65; push_authorized_channels_only 关闭;

好的,现在这告诉 nginx 在端口 80 上侦听对 /broadcast/sub 的任何调用,并将返回发送到 /broadcast/pub 的任何响应。

也很基本。这部分并不难理解,并且在互联网上有很好的记录。大多数时候,这背后都有一个 ruby​​ 或 php 文件来进行广播。

我的想法是让 node.js 广播/broadcast/pub。我认为这会让我persistent streaming data在不中断连接的情况下从服务器到客户端。我尝试了循环请求的长轮询方法,但我认为这会更有效。

或者这行不通。

Node.js 文件

现在创建 Node.js 我迷路了。首先,我不知道如何让 node.js 以这种方式工作。

我用于长轮询的设置如下:

这会侦听端口 8000 并仅写入响应变量。

对于长时间的轮询,我nginx.config看起来像这样:

这只是将端口 80 重定向到 8000 并且工作正常。

有没有人知道如何让 Node.js 以 Comet 理解的方式运行。会非常好,你会帮我很多。

资源

用过的

要使用 faye,我必须安装 comet 客户端,但我想使用 Nginx 提供的客户端。这就是为什么我不只使用faye。nginx 使用的那个更加优化。

额外的