【问题标题】:Long Polling in Mochiweb - How to tell if client aborts request?Mochiweb 中的长轮询 - 如何判断客户端是否中止请求?
【发布时间】:2010-06-23 06:49:57
【问题描述】:

我有一个基本的 mochiweb 轮询循​​环,如下所示,除了它执行其他操作而不是打印到控制台并最终返回:

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

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

在客户中止他们的请求之前,这很有效。例如,如果客户端窗口关闭,此进程将无限期地运行。

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

【问题讨论】:

    标签: erlang mochiweb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      相关资源
      最近更新 更多