kabel.ring-ws is written
against ring.websocket.protocols; callers inject run-server.
kabel.http-kit and the new kabel.jetty supply theirs and return the same
map, so switching adapters is one line. http-kit remains the default and
kabel's only declared server dependency; ring-jetty9-adapter is provided.with-channel,
deprecated in 2.4.0 as having "potential race conditions" (http-kit#318).
It hands back a live channel and then you attach on-receive, so a client
that sends immediately after the upgrade could have its first message arrive
before a handler existed. A Ring listener is supplied as part of the upgrade
response, so no such window exists.kabel.jetty for in-process TLS, HTTP/2, connection caps, idle
timeouts or metrics. It also negotiates permessage-deflate out of the box,
which http-kit does not yet (http-kit#617).org.replikativ.kabel.PerMessageDeflateExtension offers RFC 7692
permessage-deflate from kabel's Tyrus JVM client, tested against an
independent server implementation. That cross-implementation testing found a
real §7.2.3.6 bug — an empty fragment must be encoded 0x00, and getting it
wrong desynchronises the stream — present in both implementations.kabel.middleware.cbor, serialization id 14) backed by
boring. Unlike fressian it runs on
ClojureScript from the same implementation, and unlike every other option
here the bytes are an IETF standard that a non-Clojure peer can read with
its own library.kabel.middleware.dual for migrating a live fressian deployment in two
deploys rather than one flag day: read both formats first, switch writers
second.decoding-for now throws on an unknown serialization id instead of
returning nil. Every serialization middleware guards its in-branch on a
match, so a nil fell through all of them and the RAW payload map reached
application code as though it were a decoded value — silent corruption, and
exactly what a peer hits when it meets a codec added after it was built.- factor start stop
- support superv.async
- small bugfixes
- support node on client-side
- add an aleph http client (server still missing)
- add a generic callback middleware
- use lightweight slf4j logging
- expose consistent host ip
- do not initialize http-client on compile time
fixes aot uberjar compilation
- properly close cljs client connection on initial error
- add :sender peer-id to outgoing messages
- add :connection url to incoming messages
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |