[jdev] Re: Serverless (peer2peer) jabber sessions

Gareth Simpson g.simpson at zoo-tech.com
Mon Apr 11 02:59:21 CDT 2005


> -----Original Message-----
> From: David Waite [mailto:dwaite at gmail.com]
> Sent: 10 April 2005 20:39
> To: Jabber software development list
> Subject: Re: [jdev] Re: Serverless (peer2peer) jabber sessions


> Yes, zero config in my book would require also:
> 1. A server, if needed, is bundled with a chat client
> 2. Chat clients can automatically negotiate setting up a
> server/servers (including race conditions with many clients starting
> at the same time)
> 3 ....

[Snip]


I can't believe how much you guys are complicating this issue, when Apple
have it all figured out.

iChat's rendezvous mode works like this.

Presence data is all stored in Rendezvous records.

Every client publishes their avail/dnd/away status and their name in
Rendezvous.

Clients scan the network for these records and build up their roster from
that, a task which Rendezvous makes trivial.

Chatting is done peer to peer.  

My client sits there listening on a port (the number of which is in my
rendezvous record). If someone wants to talk to me, they just connect to
that port and send the <stream> header just like they would to a  jabber
server.  My client accepts the connection and sends the header back.

Messages are then sent back and forth.  They are just standard <message>
packets.  They omit the "from" attribute, since you have a socket per person
and know where the message came from.

The conversation ends when one or other side closes the connection.

And that's it. 

So yes, every client has to be a server, but because the roster stuff is
handled elsewhere, it's completely trivial - just messages back and forth.
Once the actual connection is established, neither side even cares which
side is the server and which is the client.

There's other stuff like group chat and video and file transfer, but at it's
most basic it's just

	Rendezvous for roster/presence
	Peer to Peer XMPP for messages

I've hacked Miranda's jabber library to support this stuff and it's taken a
few hours at most.  






More information about the JDev mailing list