[jdev] Help choosing the right technology

Kevin Smith kevin at kismith.co.uk
Tue Nov 13 07:58:34 UTC 2012


On Tue, Nov 13, 2012 at 7:47 AM, Michael Weibel
<michael.weibel+xmpp at gmail.com> wrote:
>>>> Push based communication.
>>> Besides ejabberd commercial, I don't know which servers implement this.
>>
>> All XMPP servers provide 'push' communication. Presence and message
>> stanzas are push-based, iq are polling.
>
> I thought he meant something like APNS/GCM, that's why I replied like this.

Noting that I'm an expert in neither of these things - APNS is largely
going to be sending notifications to the user, which is unlikely to be
useful in a machine<>machine client. GCM seems to be duplicating some
of the functionality you'd get from the XMPP channel.

>>>> Scalability
>>> This entirely depends on the server and, more specifically on your use case. You might want to do load tests using e.g. Tsung[2].
>>
>> Picking an arbitrary load testing tool is unlikely to result in useful
>> data. The best thing is to quickly knock together a tool that
>> simulates the type of traffic you'll be generating.
>
> Tsung provides you with the basic things you need to generate load depending on your use case. Of course I didn't mean to just use it with the most basic configuration.

Fair enough. My experience was that it was easier to just write
something myself doing particular types of load testing (I don't
remember if I couldn't get Tsung to work, or it was just easier).

It's worth noting that using load testing tools on XMPP servers (at
least the higher performance ones) almost always leads to performance
testing of the load testing tools, rather than the server itself, as
the server will typically process the data faster than the tool will
send it.

They're still useful, though.

>>> Message reliability is very important (as said previously). Also you'll need an XMPP library which is robust. There's e.g. asmack[3] for Android and e.g. XMPPFramework[4] for iOS.
>> There are more choices than just these (and these may not be the best choices).
> Could you please elaborate on this? As I was searching for libraries I couldn't find a lot more than those.

Being entirely partisan, I'd use Swiften on iOS. There's also a
Swiften branch for Android (for a C++ interface), and I expect Stroke
(Java) will support Android pretty soon. I'm sure there are other
possible libraries, too.

I'm encouraging people to do a bit of digging and see what the options
are, and not pick the first library/server/client/whatever that's
mentioned.

/K


More information about the JDev mailing list