Re: Arbitrary data streams in XMPP (Purpose: Desktop Screen Sharing)

Florian Schmaus <[email protected]> Fri, 12 Feb 2016 13:33:19 +0100
Newsgroups gmane.network.jabber.devel
Message-ID <[email protected]>
On 12.02.2016 13:04, Niklas Andersson wrote:
>  What are your thoughts/comments/questions?

I was about to write "Jingle" but Matthew was faster. :) So I'm try to
elaborate a bit on that: Your abstract requirement is to establish a
session between two (or more) entities which can be used to transfer an
arbitrary bytestream. File transfers and (live) audio/video
transportation requires the same.

In those cases XMPP is typically used only as signalling protocol,
because it's relatively easy to connect entities over XMPP (even
considering firewalls, mobile links and other obstacles). But you
usually don't want to transfer a large amount of data over a pure XMPP
channel (only as last resort/fallback). Thus you only perform the
signalling and the negotiation of a bytestream session between the
entities via Jingle.

The mechanisms how the bytestream is constructed are manifold. Ideally
the entities are able to establish are direct TCP connection. But this
doesn't work (in most cases). Jingle knows a ton of alternative
mechanisms, each with their own pros and cons. For example XEP-0260
Jingle SOCKS5 or XEP-0176 Jingle ICE-UDP Transport Method.

In terms of protocol specification(s) everything required is here. But
experience of XMPP file transfers has shown that it's not easy to get a
"works always" user experience. IMHO this is mostly because the
implementations are not as good as they could/should be (and Smack is
not an exception here). But implementing the various mechanisms is not
an easy task, considering that there are many, not all are supported or
available and you have to able to fallback to (multiple) other mechanisms.

- Florian

_______________________________________________
JDev mailing list
Info: http://mail.jabber.org/mailman/listinfo/jdev
Unsubscribe: [email protected]
_______________________________________________
signature.asc (application/pgp-signature, 603 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQF8BAEBCgBmBQJWvdEPXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQxMzU3QjAxODY1QjI1MDNDMTg0NTNEMjA4
Q0FDMkE5Njc4NTQ4RTM1AAoJEIysKpZ4VI4120gH/0SVSK4t3g0Ccgn4Kz0lqAaN
6a7CEFWrA1DWSLLPAoOEvNO0+/u7rMw2DFBPMNXjaH1Zbr7aHEyP0+lzDh+YrEVq
4nUlQBwAhoS6YJaFyYyn2wiTQjurO3Lqz+hn17uzXRzVKzu3JJ5sxkZz4+KEIXeJ
XQTtN+OKs91QFgBO4Kot9DbTo09f+aO7PBj61AATvI5oBf7t3Zv43UCFhdNpKlX4
X96QqBb7XvayxE1HJGzgtN6gIGNKCfyRx3QuxuYXZzohv7AeTrgomFsIju7cCk6x
K9jUUzlwxvz/g9AQ3Dl0CTnu268Ybi2soaXtJmcxH0WFa231SJ2RqeuEfmPleRA=
=qFj/
-----END PGP SIGNATURE-----