Mam następujący kod:Clojure (alef) wykrywanie gdy serwer rozłącza
(ns alephtest.core
(:use lamina.core aleph.tcp aleph.formats))
(defn connection-established [socket]
(println "Socket connection established")
(on-closed socket #(println "closed"))
(doseq [line (line-seq (java.io.BufferedReader. *in*))]
(enqueue socket line)))
(defn -main []
(on-realized (tcp-client {:host "localhost" :port 9000})
connection-established
#(println "error:" %)))
wszystko, co robi teraz, to łączy się z serwerem lokalnym, a następnie przechodzi przez dane z stdin do serwera. Działa to dobrze, z wyjątkiem części (on-closed socket #(println "closed"))
. Jeśli zabiję serwer, gdy klient nadal będzie działał, powinienem otrzymać komunikat "zamknięty" do konsoli, ale nigdy tego nie robię.
Moim końcowym celem jest stworzenie kodu przywracania, aby po zaniku serwera klient ustawiał w kolejce wiadomości podczas oczekiwania na przywrócenie serwera, a gdy serwer wróci, " Połącz ponownie i wyślij wszystko, co było w kolejce.
To zrobiło, dziękuję bardzo! (Do tej pory też nienawidzę kochającego alefta, dziękuję ci również za to: P) –