问题标签 [keep-alive]

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 投票
4 回答
2235 浏览

c# - C# - 发送 HttpWebRequest 到远程上传图片?

几天来,我一直在尝试编写一个将图像远程上传到图像主机(imgur.com)的程序。我使用 Wireshark 嗅探浏览器发送的 http 请求,然后创建具有相似标头和参数的 HttpWebRequest。但是服务器总是给我发回一些奇怪的东西。请看代码(此代码已简化):

现在我嗅探我的上传请求(第二个请求)并将其与浏览器的请求进行比较,只有两个区别:

  • 浏览器的 'Connection' 标头 ='keep-alive' 但我的不存在(我不知道为什么 request.Keep-alive 设置为 'true')

  • 某些浏览器的 cookie 没有出现在我的中。

响应应该是 JSON,如下所示:

但是服务器通过一堆特殊字符响应我的请求......我无法找出以上 2 个差异中的哪一个导致我的代码不起作用。如果您能帮助我使此代码正常工作,我将不胜感激。我是新手,所以如果我的代码或我的表达很愚蠢,请不要怪我。

任何人都可以帮助使此代码正常工作吗?

P/S:我正在使用 .net 框架 4

0 投票
1 回答
1580 浏览

linux - 在 HTTP 请求上使用 HTTP Keep-alive 的方法

我最近一直在阅读有关网站性能的信息,除了降低 HTTP 请求之外,还有另一个影响 Web 性能的主要因素。

服务器和客户端之间的保持活动连接。

现在,由于我在共享主机上,我非常怀疑 KA 连接是否可行,但我很快会在家里设置自己的 linux 测试台服务器,以便在网站上运行不同的优化时运行我的博客几周。

在我冒险为自己和我的客户购买一年从媒体寺举办的精彩活动之前,其中一个是 KA。


是否有人对普通网站上的 KA 连接有任何经验,如果有,您从这些优化中看到的性能提升(粗略数据)是多少?

我想知道从 linux 服务器的角度实现 KA 的方法是什么,KA更​​以路由器/防火墙为中心、基于服务器端代码还是基于内核

0 投票
2 回答
354 浏览

google-chrome - chrome - 不要等到收到所有数据 - node.js

我正在试验 node.js 以及保持 http 连接打开的可能性,以便稍后发送新数据。就像一个单向插座。

我有以下 node.js http 服务器:

当我在 Firefox 中向该服务器发出请求时,我每秒都会收到一个新号码,直到达到 50 号。

在 chrome 中,它等待 50 秒,然后一次给我所有数字。如何在 chrome 中实现与 firefox 相同的行为?

0 投票
4 回答
57668 浏览

c - 如何正确使用 SO_KEEPALIVE 选项来检测另一端的客户端已关闭?

我试图在Linux环境下学习C语言套接字编程中选项SO_KEEPALIVE的用法。

我创建了一个服务器套接字并使用我的浏览器连接到它。它是成功的,我能够读取 GET 请求,但我被困在 SO_KEEPALIVE 的使用上。

我检查了这个链接keepalive_description@tldg.org但我找不到任何显示如何使用它的示例。

一旦检测到客户端对accept()函数的请求,我就会在客户端套接字上设置SO_KEEPALIVE选项值。1现在我不知道,如何检查客户端是否已关闭,如何更改发送的探测之间的时间间隔等。

我的意思是,我将如何获得客户端已关闭的信号?(没有在客户端读取或写入 - 我认为当探针没有从客户端回复时我会得到一些信号),在设置选项 SO_KEEPALIVE 后我应该如何编程)。

此外,如果假设每 3 秒发送一次探测并且客户端在两者之间关闭,我将不会知道客户端已关闭,我可能会得到 SIGPIPE。

无论如何,重要的是我想知道如何在代码中使用 SO_KEEPALIVE。

0 投票
0 回答
464 浏览

facebook - 为什么我在 Fiddler 中看到对 api.facebook.com 的保持活动请求,而没有对 api.facebook.com 的请求?

好吧,这个问题有点撒谎。我的网页确实向 api.facebook.com 发出 https: 请求。但这就是让我感到困惑的地方。我打开 Fiddler 并加载我的页面。我的页面确实在某个时候向 api.facebook.com 发出了请求。我等到我的页面根本没有发出任何请求。我刷新了我的页面,并且在我的页面点击代码向 api.facebook.com 发出请求之前,我在 Fiddler 中看到了对 api.facebook.com:443 的保持活动请求;回复中包含服务器证书信息。事实上,在我告诉浏览器重新加载页面之后,但在获取页面本身之前(根据 Fiddler),我经常会看到一些这样的请求。如果我使用 Chrome 进行测试,我在 Chrome 的网络控制台中看不到请求。如果我清除缓存和 cookie 并刷新,我不会

我很感激任何帮助。

0 投票
0 回答
933 浏览

python - retrbinary 期间线程化的“NOOP”命令

我编写了一个 FTP 脚本,不幸的是它必须处理防火墙后面的服务器。ISP 也很早就切断了我的控制连接,无论我可能在防火墙的任一侧设置什么样的超时设置。我终于有了两个选择。1) 在 retrbinary 命令处分叉代码,以便在下载完成时每 n 秒发送一次“NOOP”,或 2) 在 retrbinary 命令处分叉代码,以便脚本将本地文件的大小与远程文件的大小进行比较。一旦大小不同,它就会尝试下载下一个文件。

我在下面包含了一些代码,这些代码举例说明了我尝试每 n 秒发送一次“NOOP”。问题是当脚本到达 isAlive while 循环并发送执行 ftp.sendcmd('NOOP') 时,事情挂起并且 while 循环锁定。该文件仍在 TCP 端口 63xxx 上下载,但我在端口 21 上的控制连接被锁定。

至于在下载过程中使用线程检查文件大小,那失败了,因为文件大小没有完全达到完整值,并且在下载的最后时刻处于相同的值。

现在的主要问题是在大量下载过程中保持我的控制连接处于活动状态,尽我所能。如果控制连接由于某种原因被终止,我的脚本需要有一个很好的方法来知道文件传输何时完成。如果没有控制连接,它就无法从服务器响应中获知。

提前致谢。

0 投票
1 回答
494 浏览

ajax - 保持活动网站的技术堆栈

网站最常见的技术堆栈是 Lamp,部分原因是它随处可用,部分原因是编程模型非常简单:对服务器的每个请求都会生成对代码的一次调用,并返回一个 HTML 块。

但是考虑一个需要保持活动功能的 Web 程序的要求,即到 Javascript 前端的连续实时数据流。我从服务器响应中的“连接:保持活动”http://ajaxian.com/archives/mibbit-ajax-based-irc-clienthttp://www.mysqlperformanceblog.com/2006/11得到的印象/12/are-php-persistent-connections-evil/是 Lamp 不是为这种类型的工作负载设计的。

所以我的问题是,对于保持活动的工作负载(这是最好的术语吗?),最好的技术堆栈是什么?

或者更准确地说,根据可靠性可扩展性的标准,什么是最好的堆栈(我不关心节省几个 CPU 周期,但我确实关心当你添加一些 CPU 周期时不会陷入崩溃的情况更多的用户,即使是在好的高端硬件上)和无处不在(能够开始使用廉价的 GoDaddy 风格的托管)?

0 投票
1 回答
2589 浏览

android - Android WebView XMLHttpRequest Keepalive

在 Android WebView 中进行 XMLHttpRequests 时,似乎没有使用 keepalive 连接。

当请求频繁发出时,我的桌面浏览器都使用 keepalive(例如,在页面的 onload 事件中触发的 XMLHttpRequests 排队到页面的加载请求连接)。

有谁知道keepalive连接的要求是什么(超时,标头..)?

非常感谢!

0 投票
1 回答
3294 浏览

macos - 无网络连接时启动 NetworkState

任何熟悉launchdMac OS X 的人,特别是文件部分的NetworkState( bool) 键?KeepAlive.plist

man页面中,launchd当 Mac 上没有网络连接时,当 plist 配置如下时,应该调用可执行文件:

这似乎可以正常工作,但是,一旦建立了有效的网络连接(定义为 Mac 具有至少一个非环回 IPv4/6 地址),launchd 应该停止调用可执行文件(因为NetworkState标志应该阻止它)。

但是,我看到的行为是,无论Mac 的网络连接如何,都会launchd继续调用我的程序!就好像完全无视国旗一样。launchdNetworkState

有谁知道如何进行这项工作,以便launchd仅在没有网络连接时调用程序,并在建立网络连接后停止调用它?

0 投票
1 回答
3976 浏览

delphi - TCP Keep Alive 在 idHttpServer(服务器)和 wininet(客户端)上

我有一个使用 idHttpServer 开发的网络服务器应用程序。当客户端连接我的网络服务器时,由于某种未知原因,断开连接(不是正常断开连接),我的网络服务器没有收到通知。我知道这是正常行为,但我需要知道客户何时死亡。

有几种方法可以做到这一点。我知道两个好方法:

1 - 实施心跳机制。客户端套接字通知服务器它还活着(需要一些工作和一些代码才能使其工作)

2 - TCP 保持活跃。这是我最喜欢的方式,因为它不需要太多的代码和工作。但我有几个关于这个的问题。

  • 这可以与 idHttpServer (用于服务器)和 wininet 功能(用于客户端)一起使用吗?
  • 这真的按预期工作吗?我的意思是,当客户端总是死机时,服务器会收到通知?
  • 有没有人有一个在wininet上设置的样本?(我想这必须在客户端设置,对吧?)
  • 有没有更好的方法来通知服务器客户端已死(当然使用 indy 和 wininet)

编辑

我正在使用 Delphi 2010 和他们 svn 中的最后一个 Indy10 源代码。