AngularJS, 2 и более пользователей на одной странице - SSE?
И так, в попытках определить нужен ли мне AngularJS для следующего проекта, возник вопрос:
Есть приложение, допустим 1 страница, на которой встречаются несколько пользователей. Регистрация и авторизация, далее у человека свой набор инструментов на странице. Так же есть Общие инструменты между пользователями. Ну как пример: 1) Чат 2) Пятнашки, ну скажем по-шаговый кооператив. В одном из проектов по "социальной" сети я использовал Server-Sent Events. Очень удобная штука. Писал ее для приложения не я, но для обновления последних сообщений, фотографий, событий на стене пользователя и прочей обновляемой вещи супер. Вот скажем на одном из двух примеров, можно ли реализовать это. То есть не так чтобы я обоими пользователями постоянно сканировал область хранения данных и при обновлении - обновлял экран. А так чтобы был мост либо между пользователями или сервер отдавал пользователю команду что нужно обновить Пятнашки чтобы увидеть ход соперника. Надеюсь не сложно объяснил. |
Angular по словам разработчиков заточен под crud приложения, создание/чтение/обновление/удаление записей в базе данных на сервере. Иными словами это админки сайтов, crm, erp, соц сети , какие либо биржы или аукционы, интернет магазины, сайты знакомств и другие подобные приложения. Возможно проканает какая нибудь текстовая игра.
В тоже время на angular не стоит писать realtime игры вроде RPG/RTS, приложения вроде word, и вообще едва ли разумно делать то что завязано на canvas или opengl. Наверно нет смысла применять его и в мелких скриптах вроде слайдера. Иными словами ангуляр рулит прежде всего там там где много ввода/вывода информации через различные формы, это процентов 95% всех приложений. Server-Sent Events можно свободно применить в любом фреймворке без исключений, в том числе и в Angular. Иными словами к фреймворку не каких особых требований не предъявляется . var app = angular.module('sse', []); // контролёр function appCtrl($scope) { // обьект информацию из которого мы покажем в шаблоне $scope.msg = {}; // функция которая будет вызвана по событию с сервера var handleCallback = function (msg) { //поместим информацию пришедшую с сервера в scope $scope.$apply(function () { $scope.msg = JSON.parse(msg.data) }); } //подключаемся к источнику событий var source = new EventSource('/stats'); //подписываемся на событие сервера source.addEventListener('message', handleCallback, false); } Также EventSource('/stats'); можно вынести в отдельный сервис, и подключать сервис там где он используется. В случае если несколько заинтерисованных директив принадлежат одному контролу, то есть смысл разместить обработку событий в родительском контроле, чтобы взаимодействие с сервером было централизованным. Данные же можно будет подключить к директивам через связывание. |
Вопрос в продолжение поднятой темы.
Большая просьба, если есть пример рабочий или его не сложно накидать буду очень благодарен... Есть события которые добавляют клиенты, модератор должен сидеть перед экраном и когда происходит событие принимать определенные действия... Действия уже описаны, просто нажимать кнопки... Я не могу сейчас вот эту связку сделать чтобы страница ожидала данных и хотела их вывести. Подскажите / помогите получать информацию из сервера. При чем все события у меня хранятся в MySQL, как их достать и передать знаю. |
Если вдруг кто-то собирался ответить - буду рад ответу.
Но, нашел неплохой пример: http://www.anupshinde.com/posts/live...pps-angularjs/ http://livebase.anupshinde.com/ Большая часть вопроса закрыта... |
Часовой пояс GMT +3, время: 03:15. |