Liking cljdoc? Tell your friends :D
Clojure only.

im.ttalk.agent.server.adapter.undertow

Undertow(luminus/ring-undertow-adapter)的垫片:让它也能发 Ring SPEC 的流式正文 (ring.core.protocols/StreamableResponseBody)。

luminus 的 adapter 不认识 SPEC 的流式正文(直接 500「Body class not supported」),InputStream / seq 正文又是 攒满了才发(designs/server-module.md §1 的实测)。它的正文分派是一个开放协议 ring.adapter.undertow.response/RespondBody——install! 给它补上 StreamableResponseBody 接口的实现: 离开 IO 线程、startBlocking、把 exchange 的 OutputStream 交给 write-body-to-stream(每次 flush 即推送)、收尾。

(require '[ring.adapter.undertow :refer [run-undertow]]
         '[im.ttalk.agent.server.adapter.undertow :as ut-shim])
(ut-shim/install!)                       ;; 进程里调一次(幂等)
(run-undertow handler {:port 3000})

只影响直接实现该接口的正文(reify / deftype);String、InputStream 等照旧走 adapter 自己的实现。 不引 Undertow 的硬依赖:requiring-resolve 取协议,用 Undertow 的人自己的 classpath 上有它。

Undertow(`luminus/ring-undertow-adapter`)的垫片:让它也能发 **Ring SPEC 的流式正文**
(`ring.core.protocols/StreamableResponseBody`)。

luminus 的 adapter 不认识 SPEC 的流式正文(直接 500「Body class not supported」),InputStream / seq 正文又是
攒满了才发(designs/server-module.md §1 的实测)。它的正文分派是一个**开放协议**
`ring.adapter.undertow.response/RespondBody`——`install!` 给它补上 `StreamableResponseBody` 接口的实现:
离开 IO 线程、`startBlocking`、把 exchange 的 OutputStream 交给 `write-body-to-stream`(每次 flush 即推送)、收尾。

```clojure
(require '[ring.adapter.undertow :refer [run-undertow]]
         '[im.ttalk.agent.server.adapter.undertow :as ut-shim])
(ut-shim/install!)                       ;; 进程里调一次(幂等)
(run-undertow handler {:port 3000})
```

只影响**直接实现**该接口的正文(reify / deftype);String、InputStream 等照旧走 adapter 自己的实现。
不引 Undertow 的硬依赖:`requiring-resolve` 取协议,用 Undertow 的人自己的 classpath 上有它。
raw docstring

install!clj

(install!)

给 luminus adapter 的 RespondBody 协议补上 SPEC 流式正文的实现。幂等;回 true。

给 luminus adapter 的 `RespondBody` 协议补上 SPEC 流式正文的实现。幂等;回 true。
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close