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 С меня пиво, много пива.:) |
Цитата:
http://ngmodules.org/modules?query=socket Там ажно 9 реализаций. Не обещаю, что что-то стопроцентно подойдёт без напильника, но таки образцы "грамотного подключения" гарантирую. Цитата:
|
Цитата:
может у кого есть уже какие решения. :) |
Цитата:
Цитата:
А то у нас тут вапчета эта.... типа "учебная студия", а не файлообменник...... ;) :) |
Цитата:
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 |
Цитата:
|
Часовой пояс GMT +3, время: 19:03. |