File tree Expand file tree Collapse file tree 3 files changed +25
-16
lines changed
example-project/src/example Expand file tree Collapse file tree 3 files changed +25
-16
lines changed Original file line number Diff line number Diff line change 6969 client<->server transit.
7070
7171 Default is to use edn, but this reference example uses a dynamic
72- packer that can swap between edn/transit/binary for testing.
72+ packer that can swap between several packers for testing.
7373
7474 Client and server should use the same packer."
7575
7676 #_:edn ; Default
77- (example.dynamic-packer/get-packer ))
77+ #_ (taoensso.sente.packers.transit/get-packer )
78+ #_ (taoensso.sente.packers.msgpack/get-packer ) ; Experimental
79+ (example.dynamic-packer/get-packer ) ; For testing
80+ )
7881
7982(def chsk-client
8083 (sente/make-channel-socket-client!
Original file line number Diff line number Diff line change 11(ns example.dynamic-packer
22 " A dynamic Sente packer that can dynamically switch
3- between edn/transit/binary modes.
3+ between #{: edn/txt :edn/bin :transit :msgpack} modes.
44
55 Handy for testing, you wouldn't normally need/want
66 something like this in production!"
77 (:require
88 [taoensso.encore :as encore]
99 [taoensso.sente :as sente]
1010 [taoensso.sente.interfaces :as i]
11- [taoensso.sente.packers.transit]))
11+ [taoensso.sente.packers.transit]
12+ [taoensso.sente.packers.msgpack]))
1213
13- (defonce mode_ (atom :edn ))
14+ (defonce mode_ (atom :edn/txt ))
1415
1516(defn- str->bytes [s]
1617 #? (:clj (.getBytes ^String s java.nio.charset.StandardCharsets/UTF_8)
2425
2526(defn get-packer []
2627 (let [ep sente/edn-packer
27- tp (taoensso.sente.packers.transit/get-packer )
28-
2928 bp ; Simple binary edn packer
3029 (reify
3130 i/IPacker2
3231 (pack [_ ws? clj cb-fn] (cb-fn {:value (str->bytes (encore/pr-edn clj))}))
3332 (unpack [_ ws? packed cb-fn] (cb-fn {:value (encore/read-edn (bytes->str packed))})))
3433
34+ tp (taoensso.sente.packers.transit/get-packer )
35+ mp (taoensso.sente.packers.msgpack/get-packer )
36+
3537 get-packer
3638 (fn []
3739 (case @mode_
38- :edn ep
40+ :edn/txt ep
41+ :edn/bin bp
3942 :transit tp
40- :bin bp ))]
43+ :msgpack mp ))]
4144
42- (reify
43- i/IPacker2
45+ (reify i/IPacker2
4446 (pack [_ ws? clj cb-fn] (i/pack (get-packer ) ws? clj cb-fn))
4547 (unpack [_ ws? packed cb-fn] (i/unpack (get-packer ) ws? packed cb-fn)))))
Original file line number Diff line number Diff line change 5555 client<->server transit.
5656
5757 Default is to use edn, but this reference example uses a dynamic
58- packer that can swap between edn/transit/binary for testing.
58+ packer that can swap between several packers for testing.
5959
6060 Client and server should use the same packer."
6161
6262 #_:edn ; Default
63- (example.dynamic-packer/get-packer ))
63+ #_ (taoensso.sente.packers.transit/get-packer )
64+ #_ (taoensso.sente.packers.msgpack/get-packer ) ; Experimental
65+ (example.dynamic-packer/get-packer ) ; For testing
66+ )
6467
6568(defonce chsk-server
6669 (sente/make-channel-socket-server!
276279 [{:as ev-msg :keys [?reply-fn]}]
277280 (let [new-mode
278281 (case @example.dynamic-packer/mode_
279- :edn :transit
280- :transit :bin
281- :bin :edn )]
282+ :edn/txt :edn/bin
283+ :edn/bin :transit
284+ :transit :msgpack
285+ :msgpack :edn/txt )]
282286
283287 (?reply-fn new-mode)
284288 (reset! example.dynamic-packer/mode_ new-mode)))
You can’t perform that action at this time.
0 commit comments