前段时间,写了一篇关于WebSocket发送图片或文件的思路的文章,主要是记录我在开发过程中的思想和一些问题考虑,这次我是关于一些大文件或者大图不压缩的情况下,如何传输的思路。
1、首先大图或者大的文件肯定是分段发送,然后到服务端统一处理,websocket的web端我建议是直接获取服务器端生成的图片地址,这样可以减少传输的字节,节省流量,也防止用户刷新,导致重新获取的许多问题;
2、分段发送的时候,加一个唯一性数据标识,用js生成Guid。示例代码如下。
function
generateUUID() {
var
d =
new
Date().getTime();
var
uuid =
'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/[xy]/g,
function
(c) {
var
r = (d + Math.random()*16)%16 | 0;
d = Math.floor(d/16);
return
(c==
'x'
? r : (r&0x3|0x8)).toString(16);
});
return
uuid;
};
3、当服务端收到分段的数据,当接受到最后一段的时候,把所有的标识一样的数据,全部设置为已经接受完成,然后再执行图片生成处理。具体如何实现,可以用缓存服务器或者用数据库,然后使用触发器去实现。