Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Angular Js и сокеты. За пиво. (https://javascript.ru/forum/angular/53826-angular-js-i-sokety-za-pivo.html)

desperado 20.02.2015 11:17

Angular Js и сокеты. За пиво.
 
Всем привет. Значит что имеем:
На Ангуляре надо слушать сокет в контроллере и в зависимости от сокетного сообщения мне нужно что то выполнять.

Я никак не могу нормально на Ангуляре реализовать прослушку сокета, смог сделать только так, с помощи Autobahn (и то, не последней версии).
var pub = new ab.Session(
      'wss://site.com:34014/',
      function(session) {
       getFactory.Info().then(function(infoObj){ // это promise с другой фабрики, откуда мне нужны некоторые данные.

       var user = infoObj.info; //получаю данные для подписки на сессию

                pub.subscribe(user, function(topic, data) { 

                var response = data.split(":");
                    if ('message' === response[1])
                    {
                       function1_call(); // вызов функции с одного контроллера
                       function2_call(); // вызов функции со второго контроллера
                       function3_call(); // вызов функции с третьего контроллера
                    }
                }, function() {
                }
                ,{
                    'skipSubprotocolCheck': false
                });
            return session;
        },
          function(code, reason) {
           
        }
    );
    });


этот код я таскаю за собой в каждый контроллер и вызываю там соотв. функцию.

Это криво и неправильно, помогите мне в идеале сделать фабрику или сервис, которая будет слушать сокет и ловить там сообщение "message". И что бы я в каждом контроллере при отлове этого сообщения запускал нужную мне функцию. Не хватает знаний грамотно подключить либу socket.io

С меня пиво, много пива.:)

MetaDriver 20.02.2015 14:29

Цитата:

Сообщение от desperado (Сообщение 357428)
Всем привет.
Это криво и неправильно..... Не хватает знаний грамотно подключить либу socket.io

Ага, привет.

http://ngmodules.org/modules?query=socket

Там ажно 9 реализаций. Не обещаю, что что-то стопроцентно подойдёт без напильника, но таки образцы "грамотного подключения" гарантирую.
Цитата:

Сообщение от desperado (Сообщение 357428)
С меня пиво, много пива.:)

9 ящиков? ;)

desperado 20.02.2015 14:44

Цитата:

Сообщение от MetaDriver (Сообщение 357488)
Ага, привет.

http://ngmodules.org/modules?query=socket

Там ажно 9 реализаций. Не обещаю, что что-то стопроцентно подойдёт без напильника, но таки образцы "грамотного подключения" гарантирую.
9 ящиков? ;)

спасибо, но я уж все перепробовал.....но не слушается у меня сокет ((
может у кого есть уже какие решения. :)

MetaDriver 20.02.2015 15:32

Цитата:

Сообщение от desperado (Сообщение 357497)
спасибо, но я уж все перепробовал.....но не слушается у меня сокет ((
может у кого есть уже какие решения. :)

Ну не, так не интересно... :) Давай лучше уже вернёмся к "идеальному" первоначальному плану:
Цитата:

Сообщение от desperado (Сообщение 357428)
....... помогите мне в идеале сделать фабрику или сервис, которая будет слушать сокет и ловить там сообщение "message". И что бы я в каждом контроллере при отлове этого сообщения запускал нужную мне функцию. .....

Для начала сделай рабочий пример того, как это сделано у тебя (просто накопипасть и выкинь всё лишнее). Ну и займёмся заворачиванием этого хозяйства в сервис (или провайдер).
А то у нас тут вапчета эта.... типа "учебная студия", а не файлообменник...... ;) :)

desperado 20.02.2015 16:54

Цитата:

Сообщение от MetaDriver (Сообщение 357513)
Ну не, так не интересно... :) Давай лучше уже вернёмся к "идеальному" первоначальному плану:
Для начала сделай рабочий пример того, как это сделано у тебя (просто накопипасть и выкинь всё лишнее). Ну и займёмся заворачиванием этого хозяйства в сервис (или провайдер).
А то у нас тут вапчета эта.... типа "учебная студия", а не файлообменник...... ;) :)

Так все в первом посте, это контроллер.

html:
<div ng-controller="Ctrl as ctrl"></div>


контроллер:
app.controller('Ctrl ', ['$scope', '$http', 'getUser', 
  function($scope, $http, getUser) {
 
// вынести в сервис

var pub = new ab.Session(
      'wss://site.com:34015/',
      function(session) {
       getUser.Info().then(function(infoObj){
                var user = infoObj;
                pub.subscribe(user, function(topic, data) { 
                var response = data.split(":");
                    if ('message' === response[1])
                    {
                       call_function1 ();
                    }
                }, function() {
                }
                ,{
                    'skipSubprotocolCheck': false
                });
            return session;
        },
          function(code, reason) {
           
        }
    );
    });

// вынести в сервис

}]);


ну и подключается помимо ангуляра autobahn.js

MetaDriver 20.02.2015 17:14

Цитата:

Сообщение от desperado (Сообщение 357545)
Так все в первом посте, это контроллер.
.... бла-бла .....
......ну и подключается помимо ангуляра autobahn.js

.... ну и... извини, не вижу ЗАПУСКАЕМОГО "in box" примера. Давай уже сделай. Помнитца у одного перца на другом форуме был девиз : Устройство должно работать "в ящике", а не "в принципе".


Часовой пояс GMT +3, время: 19:03.