Длинные опросы в Mochiweb - Как определить, если клиент прерван будет запросом?

StackOverflow https://stackoverflow.com/questions/3097453

  •  29-09-2019
  •  | 
  •  

Вопрос

У меня есть базовый цикл опроса MOCHIWEB, который выглядит следующим образом, за исключением того, что он делает другие вещи вместо печати к консоли и в конечном итоге возвращается:

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

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

Это прекрасно работает, пока клиент не прернет их запрос. Например, если окно клиента закрыто, этот процесс продолжает работать на неопределенный срок.

Я хотел бы знать, есть ли вариант в Start () Mochiweb () или, может быть, что -то еще, которое я упускаю из виду, что MochiWeb автоматически прекратило этот процесс или, по крайней мере, отправил сообщение на прерванное клиентом. Любые идеи?

Это было полезно?

Решение

Выглядит как один Решение - это настройка еще одного процесса для повторного вызова gen_tcp:recv(Req:get(socket), 0, 1) и ищу результат {error, closed}, затем убийство процесса опроса, если он получен ... не уверен, что это оптимально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top