Угловой провайдер с данными из веб-сокета

0

Я хочу создать поставщика (или другую услугу) в AngularJS, которые возвращают данные из подписки websocket. Как я могу получить данные из моего провайдера в области в режиме реального времени?

Образец:

app.provider('MyProvider', function () {

    this.$get = function () {

        var dataFromProvider ;

        ws.subscribe('subscribeTopic', function (data) { 

            var dataFromProvider = data;             

        });

        return {
            dataFromProvider: dataFromProvider
        }       

    }

});

app.controller('myCtrl', function ($scope, MyProvider) {

$scope.myData = MyProvider.dataFromProvider;

});
Теги:
websocket

1 ответ

0

Создайте сервис с расширениями RxJS для углового.

app.provider('MyProvider', function () {

    this.$get = function (rx) {
        var subject = new rx.Subject();
        ws.subscribe('subscribeTopic', function (data) { 
             subject.onNext(data);             
        });

        return { subject: subject }; 

    }

});

Применение

app.controller("myVm", function($scope, MyProvider) {
    var subscription = MyProvider.subject.subscribe(function(data) {
         $scope.data = data;
    });
    $scope.$on("$destroy", subscription.dispose);
});

RxSubject может обрабатывать несколько подписчиков и работать со всеми стандартными фильтрами и комбинаторами rxJS.

Например, для службы, использующей angular.rx.js, см. Этот ДЕМО на PLNKR

Ещё вопросы

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