4

次のような基本的な mochiweb ポーリング ループがありますが、コンソールに出力する代わりに他のことを行い、最終的には戻ります。

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

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

これは、クライアントがリクエストを中止するまでうまく機能します。たとえば、クライアント ウィンドウが閉じられている場合、このプロセスは無期限に実行され続けます。

mochiweb の start() にオプションがあるかどうか、または mochiweb がこのプロセスを自動的に終了するか、少なくともクライアントの中止時にメッセージを送信する見落としている何かがあるかどうかを知りたいです。何か案は?

4

1 に答える 1

0

ある解決策は、別のプロセスを設定して繰り返し呼び出しgen_tcp:recv(Req:get(socket), 0, 1)て結果を探し、{error, closed}それが受信された場合はポーリング プロセスを強制終了しているように見えますが、それが最適かどうかはわかりません。

于 2010-06-22T22:49:57.663 に答える