File tree Expand file tree Collapse file tree 2 files changed +31
-1
lines changed
ring-jetty-adapter/test/ring/adapter/test Expand file tree Collapse file tree 2 files changed +31
-1
lines changed Original file line number Diff line number Diff line change 9
9
(on-error [listener socket throwable ])
10
10
(on-close [listener socket code reason]))
11
11
12
+ (extend-protocol Listener
13
+ clojure.lang.IPersistentMap
14
+ (on-open [m socket]
15
+ (when-let [kv (find m :on-open )] ((val kv) socket)))
16
+ (on-message [m socket message]
17
+ (when-let [kv (find m :on-message )] ((val kv) socket message)))
18
+ (on-pong [m socket data]
19
+ (when-let [kv (find m :on-pong )] ((val kv) socket data)))
20
+ (on-error [m socket throwable ]
21
+ (when-let [kv (find m :on-error )] ((val kv) socket throwable )))
22
+ (on-close [m socket code reason]
23
+ (when-let [kv (find m :on-close )] ((val kv) socket code reason))))
24
+
12
25
(defprotocol Socket
13
26
(-send [socket message])
14
27
(-ping [socket data])
Original file line number Diff line number Diff line change 716
716
@(hato/close! ws)
717
717
(Thread/sleep 100 )))
718
718
(is (= [[:ping " foo" ] [:pong " foo" ]]
719
- @log)))))
719
+ @log))))
720
+
721
+ (testing " using a map as a listener"
722
+ (let [listener {:on-open (fn [s] [:on-open s])
723
+ :on-message (fn [s m] [:on-message s m])
724
+ :on-pong (fn [s d] [:on-pong s d])
725
+ :on-error (fn [s e] [:on-error s e])
726
+ :on-close (fn [s c r] [:on-close s c r])}]
727
+ (is (= [:on-open :sock ]
728
+ (ws/on-open listener :sock )))
729
+ (is (= [:on-message :sock " foo" ]
730
+ (ws/on-message listener :sock " foo" )))
731
+ (is (= [:on-pong :sock " data" ]
732
+ (ws/on-pong listener :sock " data" )))
733
+ (is (= [:on-error :sock " err" ]
734
+ (ws/on-error listener :sock " err" )))
735
+ (is (= [:on-close :sock 1000 " closed" ]
736
+ (ws/on-close listener :sock 1000 " closed" ))))))
You can’t perform that action at this time.
0 commit comments