资讯详情

xmpp协议如何支持发送/接受离线文件思路之一

需要在最近的项目中使用openfire为了即时消息,但项目要求用户在服务器中备份传输的各种数据,并支持离线文件的发送和接受。阅读一些在线信息openfire是不支持离线文件的传递,它是socks实现代理服务器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

即时通讯(xmpp协议)发送离线文件

离线文件发送可以作为即时通讯中网络硬盘的一种特殊情况,可以实现多种方法。
数据(文件)和元数据(文件信息,包括存储位置、大小、授权等)的分离应该是更好的实践,元数据的使用XMPP以服务外部组件的形式存储,发送方在发送前从xmpp服务获得数据存储位置,成功发送数据后通知xmpp服务,接收方上线后xmpp服务读取元数据,然后根据元数据中的位置信息和授权信息获取真实数据,完成离线文件传输。
文件系统选项、授权和客户端工作量是需要解决和权衡的几个问题,amazon的S3是不错的选择,但国内网络和使用不方便,开源Eucalyptus支持S3接口可以考虑,S授权文件也很方便。
mongodb储存也是不错的选择,但是mongodb的验证系统还较为简单,除了使用临时用户没有别的方式实现授权。
S3和Mongodb可提供高可用的集群支持。
BOSS直接改造提供了另一种方案Proxy65.该方案是客户端开发人员成本最低的原型,可以快速出来。
Proxy65提供两个字节流的代理传输TCP(UDP可选)打开连接之间的通道,实现字节流(可理解为文件)的传输,只需将传输字节流改为存储字节流即可。
Proxy65提供两个字节流的代理传输TCP(UDP可选)打开连接之间的通道,实现字节流(可理解为文件)的传输,只需将传输字节流改为存储字节流即可。

标签: 集成电路cc2520rhdr

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台