最近项目中需要使用openfire来做即时消息的传输,但是工程要求用户传递的各种数据都要在服务器备份,且需要支持离线文件的发送和接受。翻阅网上一些资料得知openfire是不支持离线文件的传递,它是socks5代理服务器实现的P2P协议的文件传输。于是只能自己去实现这个功能,整理一下思路:
1,开发Openfire插件,使用http/ftp协议发送和接收离线文件。这个工作量目前还没评估一下到底有多少,可靠性有多少等等,我比较倾向于Http协议,看了ftp协议与http协议的比较,ftp比较适合大文件的传输,而Http比较适合小文件的传输。项目中可预见的没什么大的文件,最多也就几M,所以http足已;
2,是不是可以把所有的文件都编码压缩转换成String数据,然后直接走XMPP的消息通路。因为之前做过Androidpn的推送(也是基于Openfire的推送服务器)项目,需要推送照片等文件,当时我的解决办法是把图片文件编码压缩成String推送的,客户端接受之后解压缩转化...这种处理也还不错,试过几十兆的图片也没问题。但目前这个项目中遇到的文件类型可能不较多,不知道这种思路还是否可行;
3,<朋友的思路> 当用户离线时,服务器伪造一个握手的信息给发送端,让发送方把文件传递到服务器,当接受方上线时,检测该用户是否有未接收的离线文件,如有就立即发送给他。(如果用户特别多,服务器压力是否太大??)
4,看到以下这篇文章觉得这个是靠普的方法之一。
本周需要确定方案。
/*********************************************************************************************************************************************************************************
以下转载:
http://blog.sina.com.cn/s/blog_48c49d5d0100rhdr.html