android - unexpected ACKing behavoir in GCM XMPP Protocol -


we using gcm’s xmpp protocol deliver push notifications our customers, problem facing when sending xmpp messages high speeds, don’t receive 'ack' or 'nack' messages gcm anymore, these results of several tests did matter :

  1. 500 xmpp messages - sent every 0.25 seconds:
    • all messages acked
  2. 500 xmpp messages - sent every 0.1 seconds:
    • on average, ~4 messages remained un-acked
  3. 500 xmpp messages - sent every 0.01 seconds:
    • 72 messages remained un-acked
  4. 500 xmpp messages - sent no sleep time (as fast possible)
    • reached 100 unacked message limit set gcm in less 0.5 seconds !

the results worse when go more 500 messages, e.g :

  1. 4000 xmpp messages - sent every 0.1 seconds:
    • on average, number of un-acked messages rose 16
  2. 4000 xmpp messages - sent every 0.01 seconds:
    • on average, reached 100 unacked limit in 800th xmpp message.

——————————————————————————————————

these results tests done on google’s own cloud (google cloud compute servers), while doing them in anyother place, yield worse results ( tested, no speed more 1msg/0.4s w using gcm’s xmpp protocol deliver push nould survive (!) 100 unacked limit)

this bad us, since there’s no optimal solution out, should now?

  1. ignore 100 unacked limit , continue sending, mean don’t know whether our messages received gcm or not.
  2. we can resend unacked message after several seconds, duplicate messages (to same clients) result.
  3. wait see if maybe acked in near future, far hasn’t worked. when unacked limit, pending messages never acked (in our experience)
  4. limit speed send xmpp messages, solution jeopardizes main initiative had use xmpp !

any or guidance appreciated.

i had same problem. used send acks gcm's nacks , when stopped doing so, went fine. check see if sending unnecessary acks.


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -