On Thu, Feb 9, 2012 at 3:09 AM, Ruff, Rob <rr...@scires.com> wrote:
> Hi,
>
>
>
> I am new to XMPP and have a few questions.  I have read the book and a
> number of different websites and am still not sure about a few things.
>
>
>
> We are considering using XMPP for chat, conferencing, etc between a number
> of systems that will not be connected via a reliable network.  The systems
> may lose connectivity at any time, especially if one is moving.  Since any
> of the systems can lose connectivity, an XMPP server will run at each one so
> the systems that are still connected can communicate.
>
>
>
> I am using Openfire and Spark as well as a bot I created using the gloox c++
> library to do some prototyping/testing.
>
>
>
> -          Is a DNS required to use XMPP, in particular for the server to
> server connections?  I have played around with using the hosts file and I
> can’t seem to get that to work.
>
> -          I have seen references to BOSH for unreliable connections but it
> usually referred to client-server connections.  Could that be used for
> server-server connections as well or is there something else you would
> recommend?
>
> -          Is multicast required?
>
> -          I understand that conferences are hosted at a particular server.
> That would mean if that particular server lost connectivity then the
> conference would be unavailable for the others that are still connected.  Is
> there any way around this?
>
>
>
> Thanks in advance!
>
> Rob
>

>From what little you've said, I think what you want is:

1. A distributed set of nodes
2. No central server(s)
3. Nodes can lose connectivity, and possibly change IPs
4. Reliable chat and conferencing between nodes (as reliable as the
network allows at least)

Is that correct? Is a central server completely out of the question?

Regarding your questions..

a) No XMPP spec requires, and no implementation I'm aware of makes use
of IP multicast. Conferencing is based on normal XMPP over TCP.

b) BOSH can be used for S2S, but no one does that. Have a look at
XEP-0198: Stream management, which also supports session resumption.

c) You can get away with not using DNS. Hosts files are not good
enough. They override A records, while XMPP servers try SRV records
first. The Prosody server has a plugin to allow custom SRV records
(http://code.google.com/p/prosody-modules/wiki/mod_srvinjection), and
IIRC ejabberd allowed the same in its config.

d) Conferences distributed across servers.. there are no
implementations yet, though as Peter said, work is being done towards
that. There are servers which support clustering conferences, but I
suspect none of them would handle your unreliable network use-case too
well.

You should take a good look at XEP-0198 session resumption. If your
nodes only temporarily go off the network (e.g., for a few minutes),
XEP-0198 can transparently handle that. You may be able to crank up
server timeouts to allow XEP-0198 based session resumption hours or
days after network failure. This has obvious consequences, like all
XMPP data having to be cached for resending, and servers/clients
having to deal with the flood of data on reconnect after a long delay,
but it gets pretty close to satisfying your requirements.

--
Waqas Hussain
_______________________________________________
JDev mailing list
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: jdev-unsubscr...@jabber.org
_______________________________________________

Reply via email to