[Standards-JIG] File transfer in MUC
mridul at sun.com
Fri Oct 13 20:04:14 UTC 2006
If I want to transfer a file to all participants in a muc , what
approach is the client/server supposed to take ?
If there is a solution for this already , please point me to it - I
could not find anything ...
I will jot down a couple below that I can think of : which will work
right now , with potential problems with each.
Also have a proposal below - but supporting that will be more of a
protocol extension since clients/servers do not support that as of now.
1) Client asks the user for list of all full jid's in some list - user
provides all that he knows of : client initiates 1-1 transfer with each
user to ship the file.
a) Direct extension of the basic file transfer.
Disadv that I can think of :
a) Cumbersome to provide all jid's - may not be available to user.
Cannot transfer to all participants in case user does not know the jid's
b) Very heavy from a client point of view - 'n' number of 1-1 file
c) A late joinee of the conference does not know about this file - and
cannot even find out about it. The file transfered using muc info is
totally transparent to muc.
2) Add support to the muc component such that - user sends file to muc ,
muc multicasts this to the participants : using file transfer.
a) Single transfer from sender to server.
b) Will be able to broadcast to all participants.
c) Will be able to add acl's of who can and cant send/receive files as
an impl detail of the muc.
d) It might be possible to hack this file into the muc archives such
that a subsequent clients could use "some way" to fetch previously
a) Not really supported - but this might not be too tough to add I guess.
b) Server/component will need to support a pretty wide range of file
transfer mechanism's to be able to receive and transmit files from/to
all sorts of clients : and there might be deployment considerations
which prevent some of them from being usable (firewall prevents oob , etc).
The above too would not be too intrusive to add - but from a usability
and protocol point of view , they are not very 'good'.
Another alternatives I was thinking of was to leverage pubsub for this
purpose (just brainstorming , not thought it through) .
a) User creates a pubsub node for the file and sends that to the muc.
muc persists the pubsub node info (for subsequent clients) , broadcasts
this to current participants and all clients use that pubsub node to
retrieve the content.
b) User creates a pubsub node , sends to muc component.
Component retrieves the file , persists it locally "some place" (in case
the client exposed uri is a transient : maybe this can be communicated
in some way) , and then uses the conference's pubsub node to push
availability of new file (this node created for each conference (maybe
on demand) for the purpose of file transfer).
(Since I cannot push binary data to a pubsub node (?) - we have the uri
I am sure others might have alternate implementations and ideas , would
be great to know how you solve this problem.
We support both (1) and (2) above with our client and server (based on
which version of client/server you talk to , and a bunch of config
options) - but would be great if there was some standard directive for
More information about the Standards