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 _______________________________________________