Reputation: 32061
I've been running around in circles the past few days trying to figure out a good solution for my problem. The main key here is that this is for an iOS application. What I want is to quickly communicate from one device to another device updates. So if user 1 performs an action, I want to, in real time, tell user 2 that user 1 has performed this action.
I don't want to use Apple Push Notifications for various reasons. So that's out of the question. I looked into services like Pusher and PubNub, but those are far too expensive (and only allow a ridiculously low number of concurrent connections, ~2500). I also looked into Google App Engine's Channel API, but it works through Javascript, and would have to be implemented using shady techniques on iOS. And honestly I'd rather not use that.
So now I'm looking into XMPP in Google App Engine. It seems like it would do what I want, but I'm not sure if I'm understanding the whole picture. Couldn't I accomplish what I wanted using XMPP messages, that is when user 1 performs an action, I can notify user 2 quickly with a JSON message?
The main key here is that I would have to perform user registration for XMPP behind the scenes, using the user's unique ID. Is this possible, to automatically and without user intervention create a Jabber ID like [email protected]?
Overall, is this a feasible solution? What am I missing? What are some exceptions?
Upvotes: 1
Views: 1920
Reputation: 24262
What you have described all sounds fairly easily doable with XMPP.
Just a couple of points.
Upvotes: 2
Reputation: 80330
AppEngine supports XMPP only as client: it can send and receive messages. The key here is if you look at the docs for sending XMPP message, that every client needs to have it's own address (JID) which is not provided by GAE.
So to support your situation, you would need to have an external XMPP server, where every client gets it's own JID and then you can send XMPP messages to them.
Upvotes: 1