首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure (aleph)检测服务器何时断开连接

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

Stack Overflow用户
提问于 2012-11-10 06:27:09
回答 1查看 696关注 0票数 6

我有以下代码:

代码语言:javascript
复制
(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:" %)))

它现在所做的就是连接到本地服务器,然后将数据从标准输入传递到服务器。这可以很好地工作,除了(on-closed socket #(println "closed"))部分。如果我在客户端还在运行的时候杀死服务器,我应该会收到一条消息,告诉控制台“已关闭”,但我从来没有这样做过。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-11 10:06:08

看起来你阻塞了用你的(doseq ...)循环通知你套接字关闭的线程。将其包装在(future ...)中,看看是否不能修复它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13316935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档