问题标签 [http-kit]

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 回答
691 浏览

clojure - 如何识别由于超时而调用了http-kit客户端回调?

例如:

如果“some-url”关闭,则在超时时,将调用“post-callback”。但是在回调函数内部,如何查看是否因为超时而被调用。请让我知道是否有办法这样做。谢谢。

0 投票
0 回答
107 浏览

ruby - 从http持久连接获取数据

我尝试了几天,我在这里有点困惑。我正在使用 clojure http-kit 发出 keepalive 获取请求。

我很确定我与目标服务器建立了持久连接,但没有写入 sample.data 文件。我尝试作为流和文本。

我也试过 ruby​​ 版本的程序创建一个持久连接,仍然没有写。

所以通常情况下,目标会使用 webhook 来通知我的服务器有新数据到来,但是我如何从持久连接中获取数据呢?

- -编辑 - -

上面是一个使用 ruby​​ 的工作示例,它使用线程从连接中读取数据。所以我必须错过一些东西才能从 clojure 获取数据

0 投票
2 回答
756 浏览

clojure - 配置 clojure http-kit 以使用转发代理

我有一个小的 Clojure 应用程序,它使用 http-kit 向服务器发送一些 http post 请求。我想通过代理 P 路由 https POST 请求,即。我希望流量像 App->Proxy->Server 一样。

(这是因为目标主机X基于IP限制访问)

这可能吗?

此外,该应用程序在 ubuntu 服务器上运行,是否有可能使 http-kit 使用代理服务器的系统级配置?我更喜欢其他过程不受影响。

0 投票
1 回答
201 浏览

clojure - HTTP-Kit 流式传输和 curl

我尝试了 HTTP-Kit ( http://www.http-kit.org/server.html#async ) 的 HTTP 流的基本示例,但是如果我curl到达端点,我会在连接后立即获得所有消息已关闭(而不是每 200 毫秒获取一次,因为它在浏览器中工作)。这是怎么回事?

我也试过这样:

行为是相同的。

0 投票
1 回答
278 浏览

clojure - http-kit websocket 解析符号

问题:如果我从 javascript 套接字客户端通过 json 传递数据,则在下面的代码中调用调用者函数时,会出现空指针异常。当我从 repl 运行相同的代码并将相同的数据传递给它时,我没有收到错误,即

在回复中:

这工作正常

来自javascript:当从处理程序调用函数调用者时,这给了我空指针异常。

0 投票
1 回答
433 浏览

clojure - 如何在 http-kit 中使用代理

我在 clojure 中使用带有代理的 http-client。而且我想尝试http-kit,但是我找不到使用代理的方法。我有一个存储在数据库中的代理列表,然后随机选择一个代理并在 http 客户端中使用它。看起来 http-kit 中没有使用代理的 api/参数。

0 投票
2 回答
1612 浏览

networking - 如何在 Clojure (/Java) 中稳健地发出大量并发 HTTPS 请求

我有一个输入流,我想HTTPS在将结果传递到程序的另一部分之前为每个请求发出 2 个网络请求。典型的吞吐量是每秒 50 个。

我正在使用http-kit客户端,默认情况下是异步的。它返回一个承诺,也可以接受一个回调。Http-kit 使用 Java NIO(参见此处此处

请求进来的速度,加上发出请求的时间,足够高以至于需要异步完成。

我尝试了 3 种方法:

  1. 当一个事件进来时,把它放在一个频道上。一些go例程拉出通道。deref每个请求都通过从 HTTP 请求中获取承诺来“阻止”goblock 。这是行不通的,因为我认为诺言不能很好地与线程配合使用。
  2. 当一个事件进来时,立即启动一个future'blocks' 异步承诺。这会导致非常高的 CPU 使用率。加上不知何故网络资源匮乏。
  3. 当有事件进来时,http-kit立即触发对请求 A 的请求,传入一个产生请求 B 的回调,传递一个传递事件的回调。这会导致几个小时后出现内存不足错误。

这些都可以工作并处理一段时间的容量。他们最终都会崩溃。最近一次崩溃,大约 12 小时后:

我不知道失败的原因是什么。可能是有太多的闭包被持有,或者逐渐的资源泄漏,或者线程饥饿。

问题

  1. 每秒发出 50 个 HTTP 请求,每个请求可能需要 200 毫秒,这意味着在任何给定时间可能有 100 个请求在进行中,这听起来像是一个过度的负担吗?

  2. 如何以处理吞吐量且稳健的方式执行此操作?

编辑

YourKit 分析器告诉我,我有大约 2GB 的char[]s via org.httpkit.client.Handlers via java.util.concurrent.FutureTasks,这表明对旧处理程序(即请求)的引用以某种方式被保留。尝试使用回调的全部原因是为了避免这种情况(尽管它们可能会以某种方式陷入闭包)

0 投票
1 回答
921 浏览

java - 无法在 clojure 中加载 http-kit 库

我正在逆时针处理日食中的窗口。当我运行此代码时:

我收到以下消息:

所以,接下来我运行:

之后我得到:

如您所见,http-kit 已加载

奇怪的是,它在上次系统重新启动之前运行良好。

这是我的 project.clj

0 投票
1 回答
145 浏览

android - 改造未能在三星 s3 android 版本 4.0.4 上发布数据时

我有一个在其他 android 设备上运行良好的 android 应用程序,但它在运行 android 版本 4.0.4 的三星 s3 上失败。Retrofit 抛出 404(找不到页面错误),但页面存在,如果我在 wifi 上发出相同的请求,它运行良好。任何对可能行为不端有想法的人。谢谢

请在堆栈跟踪下方找到

下面是我用来拨打电话的代码

0 投票
1 回答
270 浏览

heroku - 如何在 http-kit 上为缩小的 ClojureScript 启用 Gzip?

我的 Clojure 应用程序与一个缩小的 600KB+ ClojureScript JS 工件一起部署在 Heroku 上,我在/js/main.js.

如何在 http-kit 上启用 gzip 压缩以减少我的 JS 工件的大小?