问题标签 [aleph]

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 投票
0 回答
159 浏览

networking - Aleph 的异步响应不是通过 IPv4 接收的,而是通过 IPv6 接收的

我正在尝试使用Aleph在Clojure中设置服务器发送的事件,但它不能通过 IPv4 工作。如果我通过 IPv6 连接,一切都很好。这发生在 Linux 和 MacOS 上。我有一个完整的例子来说明我在 GitHub 上谈论的内容。

我不认为我在做任何特别花哨的事情。整个代码都在 GitHub 上,但基本上我的程序是:

但是,当我连接到时127.0.0.1:3000,我可以看到 curl 发送请求标头,但它只是挂起,从不打印响应标头:

如果我通过 IPv6 连接,响应会立即出现,并且我enqueue在通道中的事件会正确发送:

我也在 Chrome 中重现了这种行为。在 IPv4 和 IPv6 情况下,tcpdump都表明响应标头通过网络传输。

这种行为发生在lein runuberjar 和 uberjar 中。如果我使用-Djava.net.preferIPv4Stack=true.

如何让我的应用程序在 IPv4 上的行为与在 IPv6 上的行为相同?

0 投票
1 回答
452 浏览

clojure - NullPointerException 当 lein ring 服务器在 Aleph+Ring 上时

我正在尝试在 Ring 之上运行 Aleph 并lein ring server用于更短的反馈循环。

当我调用lein ring server一切似乎都很好,但是当我将浏览器指向一个 url 时,我NullPointerException对下面的堆栈跟踪感到讨厌。

但是,当我跑步时,(al.app/start 3006)没有NLP出现。

整个项目在GitHub上可用。

我究竟做错了什么?

我正在使用 aleph 0.3.2,这是我的代码:

0 投票
2 回答
1174 浏览

clojure - 使用 aleph 处理 websocket 客户端消息

在我学习 Clojure 的过程中,我目前面临设置 websocket 通信的问题。经过许多不同的方法后,我最终使用了aleph

我设法实现的目标:

  • 处理新客户端连接
  • 处理客户端断开连接
  • 随意从服务器与客户端交谈

我缺少的是每当一个连接的客户端通过 websocket 发送一些东西时触发一个处理函数的方法。

到目前为止我的代码:

我用注释掉的 http/start-server aleph 调用启动 Netty 服务器。我还设法通过手动流/获取从客户端获取消息!调用(也被注释掉了)。我需要弄清楚的是,当有东西进来时,如何自动触发这种摄取。

提前感谢您的帮助!

0 投票
1 回答
518 浏览

clojure - Compojure/Ring Routing Error: Wrong # of Arguments

下面详述的路线设置会导致错误:Wrong number of args (0) passed to: PersistentArrayMap谁能帮我理解这个错误以及如何解决它?

0 投票
0 回答
7567 浏览

clojure - 无法从网络接口中找到可用的硬件地址

在 Docker 容器内将 Aleph(使用 Netty)作为网络服务器运行时,我收到以下警告:

我正在使用以下方式启动服务器:

我也试过:

但我仍然收到同样的警告。

警告发生在 docker 容器内。我可以在没有警告的情况下在我的主机中运行服务器。如果当我运行我使用的容器时,我也不会收到警告docker run --net host webserver

真正奇怪的是,尽管有警告,但一切看起来都运行良好。绑定了正确的端口,服务器运行正常。有谁知道为什么我会收到此警告?

0 投票
1 回答
1049 浏览

clojure - Clojure - 使用带有 Yada/Aleph 的 core.async 通道

我正在尝试使用 Clojuremanifold库,为了理解它,我需要将core.async通道转换为流形流。

我想使用core.async通道创建以下等效项:

我正在尝试将core.async频道输入yada. 第一个代码示例, usingmanifold.stream/periodic工作,而不是其他使用core.async. 我试过雅达1.0.01.1.0-SNAPSHOT

使用manifold.stream/periodic作品:

使用manifold.stream/->source返回错误 500 :

第三次尝试,使用core.async通道(不同的错误 500):

0 投票
1 回答
206 浏览

tcp - TCP 使用 Aleph 传输长字节

我正在尝试构建基于aleph. 它通过了所有测试,但是当发送或接收的字节数组变大时,字节似乎已损坏。

例如。我试图发送一个长度为 2936 的字节数组,但我在服务器上只有 1024 个字节

我按照这个例子做了我自己的修改nippy。编码和解码将由处理程序自己完成。

0 投票
1 回答
643 浏览

clojure - 如何确保 websocket 连接在 Aleph 中保持活动状态

我正在尝试使用 Aleph 与 Slack 的 RTM API 交互。

目前我有这个代码:

它在前几次运行良好,然后conn在一些不活动后停止接收来自 Slack 的消息。它也没有打印“关闭”,这似乎表示流没有关闭。我不太确定这里发生了什么。

如何使 websocket 连接保持活动状态,或者在断开连接时自动重新连接?我在野外看到了一些代码在执行 ping 操作,但我认为我对代码的理解不足以适应它。

0 投票
1 回答
270 浏览

ssl - Clojure:使用 aleph 连接到 TLS 启用 docker 守护进程

我正在尝试使用 aleph 连接到相互验证的 Docker 守护程序。aleph 文档显示您可以传入 netty SSL 上下文以进行身份​​验证。似乎我正在正确创建 SslContext,但所有请求都已关闭

结果:“ExceptionInfo 连接已关闭 clojure.core/ex-info (core.clj:4617)”

有没有人找到使用 TLS 连接的好方法?我已经尝试过https://github.com/aphyr/less-awful-ssl但这并不适用于 netty。帮助thnx!

0 投票
1 回答
288 浏览

clojure - Aleph/Clojure - 如何在 Web 套接字升级响应中插入自定义标头?

我正在尝试将我们的一项服务移植到 Aleph。该服务使用 Web 套接字服务器(当前在 http-kit 上运行)。我需要的一件事是能够在 websocket 升级过程中在响应中添加一些自定义 http 标头。你看到我可以做到这一点的方法吗?

详细说明,我需要检查Sec-WebSocket-Extensions客户端请求的标头值,并在升级过程中基于该值添加响应标头。同样需要检查Sec-WebSocket-Protocol请求中的标头,如果协议是我所期望的,则将其添加回响应中。