IM中文件传输分为单对单文件传输和群聊文件传输。文件传输的方式一般有两种,一种使用http方式,一种则是使用p2p方式传输文件。那么两种方式应该如何选择呢?
首先,我们看一下两种传输方式的优缺点。
http文件传输方式优点如下:
- 支持离线方式,发送方上传完文件,接收方上线后可以随时下载;
- 对于群聊中文件传输,发送方只需要上传一次即可;
- 服务器存储文件,可以进行有效控制,对于过滤不良信息有所帮助;
- http协议本身支持断点续传和断点下载,对于上传和下载中断情况可以很好处理。
- 便于用户分享;
http 文件传输方式缺点:
- 服务器需要存储文件,增加了运营服务器的成本;
- 文件经过服务器,会增加服务器的流量消耗;
- 文件传输经过服务器,私密文件安全性风险增加;
p2p方式传输优点:
- 服务器无需存储文件,减少了文件存储的成本;
- 文件不经过服务器,减少了服务器的流量消耗;
- 文件传输不经过服务器,私密文件安全性更高;
p2p方式传输缺点:
- 需要发送方和接收方同时在线,用户使用不方便。
- 对于群聊中文件传输,发送方需要传输多次,发送方流量消耗增加;
- 无法进行对不良消息的过滤;
- p2p 文件传输需要建立p2p连接,p2p连接建立有可能失败。
- p2p协议本身不支持文件断点续传和断点下载,如果需要实现文件断点续传和断点下载比较复杂。
- 不利于用户分享;
结合单对单文件传输和群聊文件传输使用场景以及两种传输方式的优缺点,现在IM发送文件大多采用http方式,对应流程如下:
- 发送方上传文件到文件服务器得到文件url;
- 发送方将文件url和文件信息发送给IM服务器;
- IM服务器将文件url和文件信息推送给接收方;
- 接收方使用文件url从文件服务器下载url;
对于图片、音频、视频等和普通文件传输方式一样,只是显示不同,另外图片和视频需要生成缩略图,将缩略图也传输给接收方。