Ну, я в какой-то степени дилемме, чтобы продолжить разработку приложения Phonegap: для уведомления о событиях в реальном времени следует пойти с Azure Notification Hub или SignalR?
По моему пониманию, SignalR хорош для веб-приложений в реальном времени с помощью веб-сокетов. В то время как центр уведомлений упрощает отправку push-уведомлений на нескольких платформах. Чтобы было легко ответить, позвольте мне объяснить структуру, которую я сейчас имею и что должно делать мое приложение.
Приложение: Это в основном приложение, в котором пользователи могут создавать группы и приглашать других пользователей. Пользователь может также сделать группу "онлайн", чтобы другие пользователи могли "enter" группы. Пока группа находится в сети и пользователь ввел, они могут отправлять вопросы, обмениваться сообщениями и так далее.
Необходимость: Когда пользователь задает вопрос в группе или вводит/покидает группу, другим пользователям необходимо увидеть нового пользователя на экране приложения. Я мог бы сделать опрос на сервере, чтобы проверить это и обновить пользовательский интерфейс, но это то, чего не позволяют современные дни. Мои поиски по этому вопросу приводят меня к двум вещам: SignalR и NotificationHub.
Текущая архитектура: Клиент → Приложение PhoneGap с backbone.js. Backend → Web-API Asp.NET с платформой Entity Framework и сервером Azure Sql.
Я уже думал о том, как использовать для этого узлы уведомлений и теги. Например, когда пользователь вводит онлайн-группу, он отправляет запрос на сервер для регистрации тега grouplisten: {groupId}. Затем сервер регистрирует тег с помощью пользовательского устройства, а также отправляет уведомление обо всех других устройствах с тегом "grouplisten: {groupId}", поэтому другие пользователи обновляют пользовательский интерфейс недавно подключенным пользователем. Также, когда пользователь покидает группу, он отправляет запрос на сервер для удаления тега grouplisten: {groupId}, а также уведомляет устройства с помощью "grouplisten: {groupId}". Но с этим простым примером, похоже, это может стать неуправляемым.