问题标签 [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.
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 run
uberjar 和 uberjar 中。如果我使用-Djava.net.preferIPv4Stack=true
.
如何让我的应用程序在 IPv4 上的行为与在 IPv6 上的行为相同?
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,这是我的代码:
clojure - 使用 aleph 处理 websocket 客户端消息
在我学习 Clojure 的过程中,我目前面临设置 websocket 通信的问题。经过许多不同的方法后,我最终使用了aleph。
我设法实现的目标:
- 处理新客户端连接
- 处理客户端断开连接
- 随意从服务器与客户端交谈
我缺少的是每当一个连接的客户端通过 websocket 发送一些东西时触发一个处理函数的方法。
到目前为止我的代码:
我用注释掉的 http/start-server aleph 调用启动 Netty 服务器。我还设法通过手动流/获取从客户端获取消息!调用(也被注释掉了)。我需要弄清楚的是,当有东西进来时,如何自动触发这种摄取。
提前感谢您的帮助!
clojure - Compojure/Ring Routing Error: Wrong # of Arguments
下面详述的路线设置会导致错误:Wrong number of args (0) passed to: PersistentArrayMap
谁能帮我理解这个错误以及如何解决它?
clojure - 无法从网络接口中找到可用的硬件地址
在 Docker 容器内将 Aleph(使用 Netty)作为网络服务器运行时,我收到以下警告:
我正在使用以下方式启动服务器:
我也试过:
但我仍然收到同样的警告。
警告仅发生在 docker 容器内。我可以在没有警告的情况下在我的主机中运行服务器。如果当我运行我使用的容器时,我也不会收到警告docker run --net host webserver
。
真正奇怪的是,尽管有警告,但一切看起来都运行良好。绑定了正确的端口,服务器运行正常。有谁知道为什么我会收到此警告?
clojure - Clojure - 使用带有 Yada/Aleph 的 core.async 通道
我正在尝试使用 Clojuremanifold
库,为了理解它,我需要将core.async
通道转换为流形流。
我想使用core.async
通道创建以下等效项:
我正在尝试将core.async
频道输入yada
. 第一个代码示例, usingmanifold.stream/periodic
工作,而不是其他使用core.async
. 我试过雅达1.0.0
和1.1.0-SNAPSHOT
。
使用manifold.stream/periodic
作品:
使用manifold.stream/->source
返回错误 500 :
第三次尝试,使用core.async
通道(不同的错误 500):
tcp - TCP 使用 Aleph 传输长字节
我正在尝试构建基于aleph
. 它通过了所有测试,但是当发送或接收的字节数组变大时,字节似乎已损坏。
例如。我试图发送一个长度为 2936 的字节数组,但我在服务器上只有 1024 个字节
我按照这个例子做了我自己的修改nippy
。编码和解码将由处理程序自己完成。
clojure - 如何确保 websocket 连接在 Aleph 中保持活动状态
我正在尝试使用 Aleph 与 Slack 的 RTM API 交互。
目前我有这个代码:
它在前几次运行良好,然后conn
在一些不活动后停止接收来自 Slack 的消息。它也没有打印“关闭”,这似乎表示流没有关闭。我不太确定这里发生了什么。
如何使 websocket 连接保持活动状态,或者在断开连接时自动重新连接?我在野外看到了一些代码在执行 ping 操作,但我认为我对代码的理解不足以适应它。
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!
clojure - Aleph/Clojure - 如何在 Web 套接字升级响应中插入自定义标头?
我正在尝试将我们的一项服务移植到 Aleph。该服务使用 Web 套接字服务器(当前在 http-kit 上运行)。我需要的一件事是能够在 websocket 升级过程中在响应中添加一些自定义 http 标头。你看到我可以做到这一点的方法吗?
详细说明,我需要检查Sec-WebSocket-Extensions
客户端请求的标头值,并在升级过程中基于该值添加响应标头。同样需要检查Sec-WebSocket-Protocol
请求中的标头,如果协议是我所期望的,则将其添加回响应中。