问题标签 [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 投票
1 回答
51 浏览

http - 通过同时使用根域和 www 来克服最大持久连接?

我已经阅读了有关通过使用各种子域以及使用各种端口来克服浏览器的最大持久连接的信息。

浏览器是否将 example.com 和 www.example.com 视为不同的主机?对于许多拥有大量图像、css 文件和 javascript 文件的开发者网站来说,这显然是一个快速的胜利。

0 投票
2 回答
3166 浏览

node.js - nodejs如何维护多个并发连接?

我阅读了很多关于 nodejs 的内容,但仍然不清楚以下内容:

  • 使用 TCP 协议客户端和服务器在一个端口上达成一致,然后可以保持连接。服务器知道客户端的 IP 地址,因此可以发回消息。如果我们使用 nodejs,那么多个客户端可以连接到同一个端口上的同一个 nodejs 服务器。这怎么可能?同一服务器如何在同一端口上建立多个连接。
  • 如果客户端在 NAT 之后,那么它的 IP 可以是动态的,那么 nodejs 服务器如何向客户端发送数据。
  • 在服务器和客户端上维护持久连接的资源利用率是多少?
  • nodejs服务器崩溃时发生了什么?客户端如何再次发起连接?
  • 如果客户端出现网络问题,并且每 5 分钟后终止并启动连接..那么有没有办法处理这种情况?
0 投票
1 回答
1601 浏览

signalr - 如何在服务器端限制 SignalR 客户端

我正在使用 PersistentConnection 将大量数据(许多小包)发布到连接的客户端。

它基本上是一种单向的数据方向(因为每个客户端都会调用其他服务器上的端点来设置各种订阅,因此它们不会通过 SignalR 连接将任何数据推送回服务器)。

有没有办法检测到客户端跟不上发送给它的消息?

该示例可能是连接不佳的移动客户端(例如,在漫游情况下,速度可能变化很大)。如果我们每秒发送 100 条消息,但客户端只能处理 10 条,我们最终会丢失消息(由于服务器端的消息缓冲区)。

我正在寻找一个服务器端事件,类似于在(SignalR)客户端上所做的,例如

但这不是框架的一部分(我认为有充分的理由)。

我已经考虑使用这种方法(在 Stackoverflow 上的其他地方建议),让客户端告诉服务器(例如每 10-30 秒)它收到了多少消息,以及该数字是否与发送到的消息数量有很大差异客户,客户很可能跟不上。

该事件将用于告诉分布式后端客户端无法跟上,然后降低数据生成速率。

0 投票
2 回答
1521 浏览

http - Why is content-length required in case of HTTP persistent connections

My understanding of how data transfer happens in tcp/http is this:

The application layer on the server side passes some data to the tcp layer to be sent to the client. The tcp layer breaks the application data into segments and sends it further. The tcp layer on the other end will ensure that it receives and arranges all the segments in order before passing them to its application layer.

Now, in the case of non-persistent connections, the server can simply close the connection when it is done sending data. What does this mean? Does it mean the server will send a FIN segment at the end? So, the client's tcp layer will basically wait for all the segments upto the FIN segment, pass this data to the upper layers and proceed with connection termination.

In the case of persistent connections, as the connection is not closed by the server, it is said that the client cannot know when it has to finish reading the response and do the next request. And so the content-length header and chunked transfer are used.

My question is "why can't we just send a segment similar to FIN (say DONE) to indicate that the server has transmitted all the response". The client on seeing DONE can start with the next request. What was the need to include a content-length header which comes with the issue of knowing the content length in advance?

I am sure I have misunderstood or missed something here. Please correct me where I am wrong above.

Thanks for reading upto here :)

0 投票
2 回答
891 浏览

java - Java FileWriter 的“持久流”?

当我想编写用于将文本写入文件的 Java 代码时,它通常看起来像这样:

但是,如果我背靠背地执行大量写操作怎么办?如果我每秒记录数十、数百甚至数千个写入操作怎么办?

就像数据库(和 JDBC)允许“持久连接”(在多个调用中保持打开的连接)一样,有没有办法让“持久流”不需要在多个write(String)调用中打开/关闭?如果是这样,这将如何工作?我必须注意哪些陷阱/警告?提前致谢!

0 投票
1 回答
1922 浏览

asp.net - 有没有办法在 SignalR 持久连接中保留消息顺序?

这种情况是 ASP.NET MVC4 项目中 SignalR(来自 NuGet 的 v1.1.2)持久连接上的单个 javascript 客户端。连接后,我会连续从客户端向服务器发送多条消息。在服务器上,我的 OnReceived 覆盖函数同时从多个线程被调用,这导致消息被乱序接收,因为它变成了看哪一个首先击中我的锁的竞赛。从服务器发送到客户端的消息似乎是按顺序传递的,尽管这可能只是运气。

对于单个客户,是否对任一方向的消息顺序有任何期望?是否有任何我遗漏的文档列出了持久连接所做的保证?

我是否需要做任何特别的事情来确保服务器到客户端的消息也保持有序?我的大部分发送都是从持久连接外部异步发送的,所以我目前只是调用 IConnection.Send 并忽略返回的任务。

0 投票
1 回答
203 浏览

android - 移动设备管理系统的android应用程序设计

我正在为移动设备管理系统开发一个 android 应用程序 - 它需要通过 https 连接保持与 Web 服务器的持久连接并等待来自服务器的任何命令。有人可以帮我设计这个应用程序吗?以下是我遇到的几个问题:

  1. 我计划创建一个意图服务,它打开一个 https 连接并通过将连接属性设置为:conn.setRequestProperty("Connection", "keep-alive") 使其持久化。这能保证持久连接吗?

  2. 应用程序如何从服务器接收命令并执行它们并响应服务器。一个简单的执行命令可能是“获取设备信息”。服务器发送命令后,应用程序应获取基本设备信息并使用 JSON 对象回复。

  3. 响应后,连接是否关闭?还是会一直开着?我希望它保持打开状态以接收来自服务器的下一个命令。

任何建议/指针将不胜感激!

谢谢。

0 投票
0 回答
215 浏览

mysql - 看不到使用 SHOW PROCESSLIST 在 Node JS 服务器内部建立的 MySQL 数据库连接;

我正在运行一个与 MySQL 服务器建立数据库连接的 Node JS + Socket.io 服务器。

我在全局级别编写了以下代码(即不在任何函数内部)

连接建立起来,我可以运行各种查询。

但问题是,当我尝试通过在外部运行命令来查找与 MySQL 服务器建立的连接数时SHOW PROCESSLIST;,它不会显示该数据库连接。

据我所知,在这种情况下会建立持久的数据库连接。谁能解释 NodeJS 和 MySQL 的这种行为。

我还插入了一个大约需要 5 分钟才能执行的查询,在执行查询时,我能够看到使用的数据库连接SHOW PROCESSLIST;

任何有关理解此行为的帮助将不胜感激。

0 投票
2 回答
1732 浏览

python - 请求之间的 Django 持久 API 连接

所以我有很多内部和外部 API,基本上每个请求都会调用它们。这意味着有很多设置与这些 API 的连接。有没有办法创建一个可以在请求之间共享的持久连接对象?

所以我想更换:

和:

有任何想法吗?

我也不确定收益会有多大,但一旦我有了第一个解决方案,我不介意做一些基准测试。

0 投票
2 回答
2404 浏览

python - 用python处理数千个持久的TCP连接

我需要在 Python 中开发一个应用程序,并行处理数千个持久 TCP 连接。客户端在引导时连接到服务器并不时发送一些消息(二进制格式)。服务器还发送回复客户端消息和异步一些其他二进制消息。基本上它是由客户端发起的持久连接,因为我无法访问 NAT 后面的客户端。

问题是:我将为此任务考虑哪些库/框架。为每个客户端生成一个线程不是一种选择。我不知道 python 的线程池库。我最近还发现了 gevent。我还有哪些其他选择?