1

According to XMPP RFC 6120 and from XMPP - The Definitive Guide, setting up a client-to-server session consists of the following phases:

  1. Initiating a TCP connection to the server
  2. Opening an XML stream
  3. Negotiating various stream features
  4. Authenticating with the server
  5. Selecting a resource
  6. For IM applications, requesting the roster and sending initial presence

In the case, clients are small IoT connected devices and they needs to keep these streams open all the time, so that server can contact them.

If I want to create the my own xmpp server

  • which ones among these are the best libraries to start with which should support rfc 6120?
  • Any design guidelines to start with ?

If creating your own xmpp server is a terribly idea ?

  • Among these servers ('openfire', 'tigase') which are best for extending its behaviour ?

  • How many concurrent connections can xmpp server can generally handle?

Community
  • 1
  • 1
forum.test17
  • 2,119
  • 6
  • 30
  • 62
  • Since you're talking about IoT devices, are you sure you really need XMPP? I had personal expecience with XMPP and I'd say that XMPP is more complex than it appears on the first glance, and in particular continuous connections might get problematic (you'll need full end-to-end message acknowledges). So *unless* you really need most/all XMPP stuff (presence management, contact management etc) I'd probably go with something custom and simple (possibly based on HTTP2 and its server push feature). – kostix Jul 07 '16 at 13:41
  • @kostix Thanks for the suggestions, but I need to use only XMPP :( – forum.test17 Jul 07 '16 at 13:51
  • 4
    Creating/Implementing your own XMPP server without a good reason and without much background knowledge about XMPP is a terrible idea. Most (all?) XMPP servers I know are extensible, because the protocol self is extensible. Often you don't even need to extend the server, instead you simply add an external/internal XMPP component to the server. If you have the funds, you may want to look which server is backed by a company providing support contracts. There is also MongooseIM and Ejabberd for example. Prosody has a great community (and I believe you will get paid support for it too). – Flow Jul 07 '16 at 14:16
  • And no need to worry about using XMPP in the IoT field. I've made good experiences with it. XMPP is modular down to the lowest level, so you can use XMPP without presence and contact management (defined in RFC 6121) and just use the parts from (RFC 6120 and maybe XEP-0198). – Flow Jul 07 '16 at 14:19
  • @Flow Thanks for the inputs. – forum.test17 Jul 08 '16 at 07:42
  • Read this https://community.igniterealtime.org/blogs/ignite/2016/07/23/support-for-iot-xeps-added-to-smack – Dev Nov 04 '16 at 05:52
  • For IoT you most probably do not need XMPP-IM support, just XMPP-Core. You may then take a look at Prosody, jabberd2 and Tigase - these should be easiest to set-up and strip-down to basic XMPP-Core support, by disabling (not starting) relevant modules. – smokku Jan 10 '17 at 09:11

0 Answers0