[Standards] Binary data over XMPP
dave at cridland.net
Mon Nov 5 16:07:24 UTC 2007
On Mon Nov 5 15:11:33 2007, Thomas Charron wrote:
> On 11/5/07, Michal 'vorner' Vaner <vorner at ucw.cz> wrote:
> > Hello
> > On Mon, Nov 05, 2007 at 02:45:05PM +0000, Dave Cridland wrote:
> > > Another option would be to setup a distinct connection (and
> protocol) for
> > > routing blobs, and so send them through the server, yet not
> in-band. I'm
> > > not comfortable with this, because it means essentially
> duplicating all
> > > security information, and maintaining synchronization between
> two distinct
> > > streams.
> > Or make the connection blobs by default, and some blobs could
> > complete XML documents, like this:
> > lenght of first block
> > <message to='bla'....>
> > length of second block
> > <iq ...>
> > length of third block
> > some binary data.
> > It is as much drastic approach as the blobs, it changes the
> > from the very basic ground. Furthermore, you can extract the
> stanza and
> > feed it to any XML parser.
> Not to mention the documentation would be much easier. We could
> just refer to the BEEP standards instead of having to write our own.
> Of course, one could argue, just use BEEP at that point.
Way ahead of you. See the first paragraph of the mail quoted above.
The essential principle is much the same, but I'm not advocating
bringing the whole of BEEP into play, here. That has flow-control and
all sorts, and supports the splitting of a message into multiple
frames, which brings in a lot of complexity.
This complexity is unwarranted, in my opinion, in the context of
XMPP. The one thing we might want - and I stress might - is the
framing of arbitrary data by framing everything.
We've always relied, in XMPP, on the implicit framing that XML can
give us, but that's not always the best option, as we've seen. Base64
doesn't - in my opinion - grant us sufficient efficiency in a number
So we need something else, and our two options boil down to either
framing everything - the BEEP method - or an escape mechanism which
is used to frame non-XML data - we can call this the IMAP method,
since it's pretty similar.
I strongly suspect, given the way the discussion is going, that we
either have to consider framing everything - and that's a huge break
from XMPP - or else we need an escape mechanism that works. Or, of
course, we decide to give up and frame using XML as now, and use
base64 to cope.
Dave Cridland - mailto:dave at cridland.net - xmpp:dwd at jabber.org
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade
More information about the Standards