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, время: 08:28. |