Wednesday, October 7, 2015

Google GCM XMPP



https://developer.xamarin.com/guides/cross-platform/application_fundamentals/notifications/android/google-cloud-messaging/

Topic Messaging

Topic Messaging is a type of downstream messaging where the app server sends a single message to multiple client app devices that subscribe to a topic (such as a weather forecast). Topic messages can be up to 2KB in length, and topic messaging supports up to one million subscriptions per app. If GCM is being used only for topic messaging, the client app is not required to send a registration token to the app server. 

Group Messaging

Group Messaging is a type of downstream messaging where the app server sends a single message to multiple client app devices that belong to a group (for example, a group of devices that belong to a single user). Group messages can be up to 2KB in length for iOS devices, and up to 4KB in length for Android devices. A group is limited to a maximum of 20 members.
http://apiminer.org/doc/google/gcm/gcm.html
Google GCM Cloud Connection Server
Any third party server can now carry out bi-directional and asynchronous communications with android devices through the services provided by Google’s Cloud Connection Server (CCS). CCS uses XMPP protocol over a TCP connection for communications.
Extensible Messaging and Presence Protocol (XMPP) that was founded and primarily used by Jabber for instant messaging(IM), information  about near real-time presence and contact list maintenance is an Extensible Markup Language (XML)-based communication protocol – a system of digital message formats and rules for exchanging messages and presence-related information between computing devices. 
The CSS uses the XMPP protocol over a long-lasting TCP connection for communications. Before the introduction of CCS, Google had Google Cloud Messaging (GCM). GCM helped servers downstream data of up to 4KB of the payload size to devices and devices to upstream data to GCM using HTTP requests. Now, CCM performs both device-to-cloud and cloud-to-device communications (through XMPP) over the same connection (TCP) and thereby helps developers achieve a better device power management in their apps than GCM.
CCS requires a Transport Layer Security (TLS) connection and Simple Authentication and Security Layer (SASL)-based authentication. This is because a strong security feature (via TLS and SASL) has been built into the core of XMPP specification. CCS incorporates JSON-based payload messages into the XMPP-supported XML structure and uses it for communications. CCS could send up to 1000 such messages asynchronously before it receives any acknowledgement from the device.
An XMPP Server for Google Cloud Messaging
Google must contact your server whenever the user sends a message from his device upstream to Google’s cloud. There are many models of how to do that. The one chosen by Google is to require a permanent connection between your backend and one of Google’s endpoints.
That’s where XMPP comes into play. Google has chosen XMPP as the protocol of choice for communicating between its servers and your server. Google named its XMPP endpoint “GCM Cloud Connection Server” or CCS for short. XMPP is an XML-based protocol that was created for instant messaging (also known under it’s original name Jabber).
For Java I have found only one library that is still actively maintained: The Smack library, which Google also uses in its sample code.




Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts