I am currently writing a iChat protocol plugin for the GAIM instant
messenger. Ihave mostly implemented/tested the basic messaging
functionality and would like
to work on the file-transfer part. Instead of further analyzing the
protocol
dumps, I am just going to be lazy here and ask a question: is the
file transfer
protocol in iChat based on the newer JEPs 0095/0096 or the older OOB
protocol?
Sorry for the late reply; I was on vacation.
Cool to hear about the iChat Rendezvous support for GAIM!
The implementation in iChat is based on the older Jabber OOB protocol.
The sender of the file starts a mini HTTP server to serve the
file/directory, and sends the URL to the receiver. There are a couple
of custom extensions since Jabber didn't support everything I wanted to
do:
1. Some custom attributes on the OOB tag give hints for the file's
size, MIME type, etc. This is to allow the incoming file notifier to
show that information to the recipient before s/he decides to download
the file. This should be pretty self-explanatory if you look at the XML
stream dumps. (Which is a polite way of saying "I long ago forgot about
the details".)
2. Transferring directories is done by specifying a magic MIME type in
the OOB tag; retrieving the directory's URL from the sender results in
XML data that describes the recursive contents of the directory. The
recipient then traverses that and makes a separate GET request to
download each file.
3. iChat accepts a content-encoding of "AppleSingle", which is a
Mac-specific way of folding the file's contents and all metadata into a
single stream. On the sending side, iChat only sends the files in that
format if the GET request indicates it supports that content-encoding.
On the receiving side, I am not certain whether iChat will be happy if
the sender won't send it AppleSingle data. If you run into trouble with
that, you may need to indicate support for AppleSingle and then just
ignore the metadata (it's pretty easy to do.)
This is getting pretty off-topic for a general Rendezvous list, so
reply to me directly if you have more questions about iChat's use of
Jabber protocol.
--Jens
_______________________________________________
rendezvous mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/rendezvous
Do not post admin requests to the list. They will be ignored.