2015-08-24 2 views
0

Я пытаюсь создать мобильное приложение в реальном времени с использованием Ionic Framework (AngularJS) и Socket.IO.Ионные/Угловые и Socket.IO - Показать всплывающее окно при получении Socket.IO

Исходя из фона jQuery, я новичок во всем дизайне и структуре иона/углового приложения (например, контроллеры, службы и т. Д.). Поэтому мне было интересно, как должно быть структурировано мое приложение или что является лучшим/идеальным способом структурирования моего приложения?

В частности, в приложении с ионным/угловым структурированием, где должен быть мой обычный код Socket.IO? Я видел один компонент (https://github.com/btford/angular-socket-io), который (как я понимаю) инкапсулирует код Socket.IO на угловую фабрику. Это путь?

То, что я действительно хочу, чтобы достичь следующие:

  1. открыть (Ionic) всплывающее, когда событие Socket.IO получено и
  2. Испустите/отправить событие/сообщение Socket.io на UI (например, нажатие кнопки).

Как должна выглядеть моя структура ионного/углового кода для достижения этой цели? То есть, какой код входит в какой компонент/контроллер/сервис/завод?

Даже высокоуровневое описание структуры сделало бы отправной точкой.

+0

Я получил Socket.io события работать в контроллерах раньше, но фабрика или сервис, вероятно, более идеальны. – SuperVeetz

+0

@SuperVeetz - Спасибо! Если я помещаю код Socket.IO в контроллер, он все равно может прослушивать события в режиме реального времени и впоследствии открывать всплывающее окно при получении? –

ответ

0

В качестве примера для вас, вот как я это сделал с контроллером ChatCtrl.

<!-- app.js --> 
<script> 
    angular.module('chatApp', ['ngAnimate']) 

    .controller('ChatCtrl', ['$scope', '$http', function($scope, $http) { 

    var socket = io.connect(); 

    // on connect, grab username 
    socket.on('connect', function(data) { 
     nickname = prompt("What's your name?"); 
     socket.emit('join', nickname); 
    }); 

    socket.on('statusConnected', function(data) { 
     $scope.status = data; 
     $scope.$apply($scope.status); 
    }); 

    }]); 
</script> 

Мой всплывающее окно является JavaScript nickname = prompt("What's your name?") но вы, вероятно, может вызвать modal или любые другие всплывающие окна вы хотите с некоторыми более JS

+0

Еще раз спасибо, SuperVeetz. Дополнительные вопросы, если можно, возникли бы проблемы с этой настройкой? Будет ли сокет иметь возможность непрерывно и успешно прослушивать события, даже если код Socket.IO находится внутри контроллера? Можно ли использовать тот же контроллер для испускания событий? –

+0

Честно говоря, я не эксперт, просто пытаюсь собрать очки и учиться/помогать, когда я хожу .. но это, вероятно, зависит от того, какой тип повторного использования вы хотите получить из кода socket.io. Если код - это то, что будет использоваться по всему приложению, то вы, вероятно, захотите поместить его в «службу», если это всего лишь небольшая часть приложения, «директива» может быть прекрасной. – SuperVeetz

+0

Я вижу .. Мое требование - это скорее первое. Спасибо за помощь в любом случае! :) –

Смежные вопросы