|
1005 | 1005 | (-chsk-connect! [chsk])
|
1006 | 1006 | (-chsk-disconnect! [chsk reason])
|
1007 | 1007 | (-chsk-reconnect! [chsk reason])
|
1008 |
| - (-chsk-break-connection! [chsk]) |
| 1008 | + (-chsk-break-connection! [chsk opts]) |
1009 | 1009 | (-chsk-send! [chsk ev opts]))
|
1010 | 1010 |
|
1011 | 1011 | (defn chsk-connect! [chsk] (-chsk-connect! chsk))
|
|
1014 | 1014 | "Cycles connection, useful for reauthenticating after login/logout, etc."
|
1015 | 1015 | [chsk] (-chsk-reconnect! chsk :requested-reconnect))
|
1016 | 1016 |
|
1017 |
| - (def ^:deprecated chsk-destroy! "Deprecated" chsk-disconnect!) |
| 1017 | + (defn chsk-break-connection! |
| 1018 | + "Breaks channel socket's underlying connection without doing a clean |
| 1019 | + disconnect as in `chsk-disconnect!`. Useful for simulating broken |
| 1020 | + connections in testing, etc. |
| 1021 | +
|
| 1022 | + Options: |
| 1023 | +
|
| 1024 | + `:close-ws?` - (Default: true) |
| 1025 | + Allow WebSocket's `on-close` event to fire? |
| 1026 | + Set to falsey to ~simulate a broken socket that doesn't realise |
| 1027 | + it's broken." |
| 1028 | + |
| 1029 | + ([chsk] (-chsk-break-connection! chsk nil)) |
| 1030 | + ([chsk {:keys [close-ws?] :as opts |
| 1031 | + :or {close-ws? true}}] |
| 1032 | + (-chsk-break-connection! chsk opts))) |
1018 | 1033 |
|
1019 | 1034 | (defn chsk-send!
|
1020 | 1035 | "Sends `[ev-id ev-?data :as event]`, returns true on apparent success."
|
|
1329 | 1344 | (-chsk-disconnect! chsk reason)
|
1330 | 1345 | (-chsk-connect! chsk))
|
1331 | 1346 |
|
| 1347 | + (-chsk-break-connection! [chsk opts] |
| 1348 | + (let [{:keys [close-ws? ws-code] |
| 1349 | + :or {ws-code 3000}} opts] |
| 1350 | + |
| 1351 | + (when-let [[s _sid] |
| 1352 | + (if-not close-ws? |
| 1353 | + ;; Suppress socket's `on-close` handler by breaking |
| 1354 | + ;; (own-socket?) socket ownership test |
| 1355 | + (reset-in! socket_ nil) |
| 1356 | + (do @socket_))] |
| 1357 | + |
| 1358 | + #?(:clj (.close ^WebSocketClient s ws-code "CLOSE_ABNORMAL") |
| 1359 | + :cljs (.close s ws-code "CLOSE_ABNORMAL"))) |
| 1360 | + nil)) |
| 1361 | + |
1332 | 1362 | (-chsk-send! [chsk ev opts]
|
1333 | 1363 | (let [{?timeout-ms :timeout-ms ?cb :cb :keys [flush?]} opts
|
1334 | 1364 | _ (assert-send-args ev ?timeout-ms ?cb)
|
|
1573 | 1603 | (-chsk-disconnect! chsk reason)
|
1574 | 1604 | (-chsk-connect! chsk))
|
1575 | 1605 |
|
| 1606 | + (-chsk-break-connection! [chsk _opts] |
| 1607 | + (when-let [x @curr-xhr_] (.abort x)) nil) |
| 1608 | + |
1576 | 1609 | (-chsk-send! [chsk ev opts]
|
1577 | 1610 | (let [{?timeout-ms :timeout-ms ?cb :cb :keys [flush?]} opts
|
1578 | 1611 | _ (assert-send-args ev ?timeout-ms ?cb)
|
|
1736 | 1769 | (-chsk-disconnect! impl reason)
|
1737 | 1770 | (-chsk-connect! chsk)))
|
1738 | 1771 |
|
| 1772 | + (-chsk-break-connection! [chsk opts] |
| 1773 | + (when-let [impl @impl_] |
| 1774 | + (-chsk-break-connection! impl opts))) |
| 1775 | + |
1739 | 1776 | (-chsk-send! [chsk ev opts]
|
1740 | 1777 | (if-let [impl @impl_]
|
1741 | 1778 | (-chsk-send! impl ev opts)
|
|
0 commit comments