Я пытаюсь написать Угловой завод, который в основном открывает WebSocket, прислушиваются к соединениям и печатают сообщения, которые он получает от сервераВозможное фундаментальное непонимание того, как работают фабрики?
Я умысел моего завода так:
angular.module('zmApp.controllers')
.factory('EventServer',
[ '$websocket',function
($websocket) {
function start()
{
console.log("*************FACTORY EVENT SERVER*************");
var dataStream;
console.log ("FACTORY webSocketStart: attempting to start a WSS connection");
dataStream =$websocket("wss://<server>:9000/");
dataStream.onMessage = function(message) {
console.log("SERVICE GOT WEBSOCKET MESSAGE:" + message.data);
};
return {
start:start
};
}])
Вот мои сомнения:
- Как убедиться, что этот завод получает «Начало» и получает сообщения, как его предполагается независимо от того, какие приложения /контроллера зрения я нахожусь? Я предположил, что включив этот завод в index.html, он будет автоматически вызван. Не так. Даже если я вызываю EventServer.start() в app.run, я могу видеть инициализацию и подключение сокета, но я никогда не получаю обратный вызов onMessage.
- Если я переименую «Factory» в «службу», он автоматически запускается, когда приложение работает, но , когда я перехожу на другой контроллер/просмотра прекращает прием сообщений (такие же, как завод)
Моя цель состоит в написании завод, который получает веб-сокетов сообщения. Вероятно, я запутался в том, как это сделать, и не делайте этого независимо от того, в каком состоянии/просматривается мое приложение.
И вот нечетная часть: если я запустил сетевой сокет с возможностью повторного подключения и I снимите сервер, я вижу, что веб-сокет пытается подключиться, поэтому я знаю, что объект соединения - dataStream не уничтожается.
Я знаю, что $ websocket работает, потому что, если я создаю веб-сокет внутри контроллера для представления, в котором я есть, он отлично работает и принимается onMessage.
Что я могу не получить, так это то, как это сделать в независимой фабрике просмотра.
Буду признателен за советы.
благодаря
Я впрыскиванием.. Вот пример контроллера http://pastebin.com/UQYp4Cf9 -> фабрика onMessage никогда не вызывается. Интересно, что onMessage этого контроллера вызывает вызов даже при выходе из него! – user1361529
Вы можете просто использовать службу '$ websocket' напрямую, если вы только вызываете методы этой службы. Это сервис, который можно вводить, когда вам нравится. Является ли создание фабрики 'EventServer' добавлением чего-либо другого к тому, что уже делает' $ websocket'? – br3w5
Спасибо. Так что сейчас это заглушка. В будущем он расширится, и это подключение к веб-сокету будет независящим от состояния приложения. Следовательно, желание заставить фабрику работать. – user1361529