Завершение неиспользуемых подключений http, которые являются результатом img ng-src

0

Я разрабатываю приложение iOS и Android (используя ионный/угловой)

У меня есть следующая ситуация:

У меня есть мнение, что в основном это делает:

<div ng-repeat="monitor in monitors">
  <img ng-src = 'http://myserver.com/cgi-bin/videoFeed?id={{monitor}}' />
</div>

Каждый монитор на самом деле является IP-камерой, и то, что мы здесь делаем, передает живой канал как непрерывные изображения в формате JPG (multipart/mime).

Что происходит, так это тег img, который постоянно показывает новые изображения, делая их похожими на живую видеопотоку

Проблема, с которой я столкнулся, - это когда мы выходим из представления, он выглядит как угловой, и все-таки держит HTTP-соединение открытым, и в результате сервер сохраняет соединение на своей стороне. Сервер запускает экземпляр "videoFeed" для каждого соединения, и я вижу, что экземпляры не исчезают даже долго (15-20 минут). Я выхожу из представления.

Есть ли возможный способ принудительного удаления этих соединений с клиента?

Я искал в SO для других подобных вопросов, и все они говорят о тайм-аутах HTTP, что не имеет значения в моем случае, поскольку это постоянное обновление фида изображения одним тегом изображения, и единственный раз, когда он должен прерываться, - когда мы выходим из представления,

благодаря

  • 0
    Вы пытались отключить кэш для этого представления <ion-view cache-view="false"> ?
  • 0
    да, это выключено Благодарю.
Теги:
ionic-framework

1 ответ

1

У меня есть теория, но не знаю, будет ли она работать. Я догадываюсь, как долго ваш url указывается на изображение, и это изображение обновляется, соединение останется открытым или снова откроется, когда изображение изменится. Итак, как насчет того, когда пользователь покидает состояние, вы удаляете список из dom с помощью ng-if.

так вот как это достигается.

В контроллере:

$scope.$on('$ionicView.beforeEnter', function(){
    $scope.inView = true;
})

$scope.$on('$ionicView.beforeLeave', function(){
    $scope.inView = false;
})

В HTML:

<div ng-repeat="monitor in monitors" ng-if="inView">
  <img ng-src = 'http://myserver.com/cgi-bin/videoFeed?id={{monitor}}' />
</div>

можете ли вы дать эту попытку и сообщить мне, что происходит.

  • 0
    проголосуй за мысль. У меня была точно такая же мысль. Я попробовал 3 разных метода: а) Как и вы, я впервые попробовал ng-if с флагом. Это все еще держит соединение открытым на сервере (я действительно думал, что это будет работать). б) Затем я написал директиву, которая перехватывает событие '$ destroy' для этого тега и при вызове заменила $ element [0] .src другим локальным изображением. Без кубиков - соединение все еще открыто на сервере. в) Я вызвал $ window.close (), когда представление выходило. Нет кости. Единственный способ, которым объект соединения закрывается на сервере, - это если я убью приложение.
  • 0
    вау это интенсивно хорошо, если я найду что-нибудь еще, я обновлю свой ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню