Firebase Cloud Messaging — масштабируемый сервер приложений (одновременные подключения)

Я создаю приложение для iOS, которое в значительной степени зависит от взаимодействия пользователя с уведомлениями. Когда пользователь взаимодействует с уведомлением, он сам и его подписчики будут немедленно уведомлены.

Для этого я решил использовать Firebase Cloud Messaging, так как я уже использую другие сервисы Firebase.

Мой сервер приложений написан на TypeScript с использованием Node.js и узел-xmpp-сервер. Согласно документации, FCM Java SDK не существует, поэтому Node. js был логичным выбором.

Когда мой сервер запущен, он создает Client и прослушивает входящие строфы от FCM. Что-то похожее на это:

var Client = require('node-xmpp-client')

var client = new Client({
    jid: '[email protected]',
    password: 'password'
})

client.on('online', function() {
    console.log('online')
})

client.on('stanza', function(stanza) {
    console.log('Incoming stanza: ', stanza.toString())
})

Для всего сервера есть только один Client, который прослушивает все входящие строфы из FCM.

У меня так много вопросов, которые я не смог найти в документации Firebase.

  1. Будут ли одновременные строфы приходить на мой сервер? Или Firebase обеспечит отправку и обработку только одного сообщения за раз?
  2. Если приходят одновременные строфы, что происходит? Некоторые потеряются?
  3. Нужно ли реструктурировать мой сервер для обработки одновременных разделов? Если да, то как мне это сделать, когда все, что я могу сделать с FCM, это слушать строфы?

Спасибо!


person cohenadair    schedule 15.02.2017    source источник


Ответы (1)


  1. Вы получите одновременные строфы
  2. Вы должны обработать их и подтвердить
  3. Да. Вам нужно использовать многопоточность, например, 1 поток получает сообщения, а другой (или более одного) обрабатывает их и ставит в очередь ACK. Как это сделать, зависит от вашей библиотеки/языка.
person Diego Giorgini    schedule 16.02.2017
comment
Благодарю вас! Есть ли какая-либо документация, подтверждающая это? Или это из собственного опыта? - person cohenadair; 16.02.2017