Thursday, November 15, 2012

Update notifications

New type of notifications is added to nginx-rtmp - update notifications. They are called periodically with given timeout while stream is in play or publish state. If result code is other than 2xx then connection is terminated. All usual parameters are passed with this call (including client request arguments).

application myapp {
live on;
notify_update_timeout 20s;
on_update http://localhost/update;
}

Default update timeout is 30 seconds, but it can be changed with notify_update_timeout directive.
This notification can be used to synchronize expired sessions.

Update: on_update ignores server access errors, empty or broken HTTP responses. Connection is terminated only on non-2xx HTTP return code.

Update2: Added notify_update_strict directive toggling strict mode. When in strict mode all network errors and bad HTTP responses are treated as update errors. Default is off.

6 comments:

  1. Роман, спасибо большое! Было в душе знакомое программером ощущение, что дропить сессии на удаленном сервере не дает гарантию отключения клиента. Теперь гарантия есть! Единственно - прошу уточнить, если нет связи с сервером валидации запросов - модуль дропнет клиентов?

    ReplyDelete
  2. Спасибо за идею. В новой версии on_update игнорит такие случаи (см update)

    ReplyDelete
  3. Роман, не хочу злоупотреблять Вашим вниманием к просьбам, но все же думаю надо продолжать трансляцию только если статус 200, в противном случае отключать - даже при отсутствии связи. Просто если использовать notify как триггер для оплаты следующего периода времени, будет обидно если кто-то сможет пользоваться неоплаченными услугами.

    ReplyDelete
  4. Я сделаю эту фичу опциональной

    ReplyDelete
  5. Добавил notify_update_strict. Подробности здесь: https://github.com/arut/nginx-rtmp-module/wiki/Directives.

    ReplyDelete
  6. Теперь все на месте, спасибо большое!

    ReplyDelete