Как правильно обернуть GAE Channel API в службу Angular.js и отправить обновления во все приложение?

Поэтому я пытаюсь использовать API канала GAE с Angular.js для выполнения обновлений с привязкой к данным в режиме реального времени (что было бы действительно здорово, правда!?). Мне сказали, что правильный способ сделать это — обернуть Channel API Javascript Client в службе Angular.js (и обязательно используйте $apply ()). Но что это означает?

Насколько я понимаю, для Channel API у меня в значительной степени должно быть соединение клиент: канал 1: 1, поэтому все мои обновления должны будут проходить по этому одному каналу для всех моделей во всем моем приложении. Как мне затем передать, возможно, нескольким областям, что модель (обычно ngResource) была обновлена? $смотреть? $ излучать? $ трансляция? $дайджест?


person SteveShaffer    schedule 31.10.2012    source источник
comment
Хорошо, после некоторого кодирования я пока остановился на одном варианте, который заключается в публикации данных на клиенте с помощью службы канала, которая хранит ключи и обратные вызовы (добавляемые контроллерами). Когда сервер отправляет ключ, вызываются любые обратные вызовы (обычно набор $get()s), которые соответствуют этому ключу. Работает на меня сейчас, но я все еще не уверен, что это правильный способ сделать это...   -  person SteveShaffer    schedule 31.10.2012
comment
Не совсем решение вашей проблемы, но хотя бы попробуйте, это pubnub.com Канал API поддерживает соединения 1:1, что означает, что если вы хотите передать одно сообщение многим клиентам, вы должны отправить много сообщений, в то время как с помощью PubNub вы отправляете только одно, и тот, кто когда-либо подключался, получает сообщение.   -  person Lipis    schedule 31.10.2012
comment
Спасибо, PubNub выглядит великолепно; Я взгляну. Я все больше привыкаю использовать API-соединения канала 1:1 в качестве безопасного, заблокированного способа вещания для этого приложения, но PubNub, похоже, будет полезен для других проектов.   -  person SteveShaffer    schedule 01.11.2012


Ответы (1)


У меня было такое же требование, и я решил его с помощью службы Angular. Я описал свое решение здесь:

http://david-codes.blogspot.com/2013/03/app-engine-channel-api-and-angular-js.html

person David    schedule 26.03.2013