Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Aleph的Clojure TCP服务器_Tcp_Clojure_Netty - Fatal编程技术网

带有Aleph的Clojure TCP服务器

带有Aleph的Clojure TCP服务器,tcp,clojure,netty,Tcp,Clojure,Netty,我正在尝试使用Aleph编写一个简单的TCP服务器。一切正常,但我不确定如何检测频道何时关闭 从: 当客户端关闭连接时,通道的两侧将立即密封。来自该频道的最后一条消息将为零 然而,我似乎从未收到这最后的nil消息。如果我检查通道,我确实看到它已关闭。这是我的密码: (use 'lamina.core 'aleph.tcp 'gloss.core) (defn process-msg [ch msg] (if (closed? ch) (println "Channel has be

我正在尝试使用Aleph编写一个简单的TCP服务器。一切正常,但我不确定如何检测频道何时关闭

从:

当客户端关闭连接时,通道的两侧将立即密封。来自该频道的最后一条消息将为零

然而,我似乎从未收到这最后的
nil
消息。如果我检查通道,我确实看到它已关闭。这是我的密码:

(use 'lamina.core 'aleph.tcp 'gloss.core)

(defn process-msg [ch msg]
  (if (closed? ch)
    (println "Channel has been closed") ;This never happens
    (do-some-processing msg)))

(start-tcp-server
  (fn [ch client-info]
    (receive-all ch
      (partial process-msg ch))
  {:port 10000, :frame (string :utf-8 :delimiters ["\n"])})
我应该做些不同的事情吗?我的帧是否阻止处理nil消息?我可以有一个单独的线程来监视我的频道,并检查它们是否已关闭,但这似乎是一个糟糕的设计。我更喜欢使用Aleph,但现在看起来我需要使用一个原始的Netty处理程序。直接使用Netty就可以了,但如果可能的话,我更喜欢使用Aleph,因为它让人感觉更习惯

若要在通道关闭或排空时注册回调,请使用(在关闭的通道回调上)或(在排空的通道回调上),这两个选项都接受具有零参数的回调


谢谢。这正是我想要的。我没想到要检查薄板文件。