gpt4 book ai didi

networking - Clojure (aleph) 检测服务器何时断开连接

转载 作者:可可西里 更新时间:2023-11-01 02:31:38 25 4
gpt4 key购买 nike

我有以下代码:

(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:" %)))

它现在所做的只是连接到本地服务器,然后将数据从 stdin 传递到服务器。这工作正常,除了 (on-closed socket #(println "closed")) 部分。如果我在客户端仍在运行时关闭服务器,我应该会在控制台收到一条消息说“关闭”,但我从来没有这样做过。

我的最终目标是创建某种恢复代码,这样如果服务器出现故障,客户端将在等待服务器恢复时排队消息,当服务器恢复时它会重新连接并发送排队的所有内容。

最佳答案

看起来你正在阻塞通知你套接字关闭的线程,你的(doseq ...) 循环。将其包装在 (future ...) 中,看看是否无法解决问题。

关于networking - Clojure (aleph) 检测服务器何时断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com