Mochiweb的长轮询 - 如何判断客户端是否中止请求?

时间:2010-06-22 21:56:59

标签: erlang mochiweb

我有一个基本的mochiweb轮询循环,看起来如下所示,除了它做其他事情而不是打印到控制台并最终返回:

blah() -> 
  io:format("Blah")
  blah()

loop(Req) ->
  PathParts = string:tokens(Req:get(path), "/")
  case PathParts of
    ["poll"] -> 
      blah()

这很有效,直到客户端中止他们的请求。例如,如果客户端窗口关闭,则此过程将无限期地继续运行。

我想知道mochiweb的start()中是否有一个选项,或者我可能忽略的其他东西会让mochiweb自动终止此过程,或者至少在客户端中止发送消息。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

看起来一个解决方案正在设置另一个进程来重复调用gen_tcp:recv(Req:get(socket), 0, 1)并查找结果{error, closed},然后在收到轮询进程时终止...不确定这是否是最佳的。