Registre um processo de uso de websocket. O problema que precisa ser resolvido é: a empresa tem uma exigência e precisa exportar cerca de 200 mil dados. Em primeiro lugar, o tempo de solicitação para exportar tantos dados é muito longo, o que pode fazer com que os usuários sintam que a rede está travada e o tamanho do download é muito grande. Calculei que deveria ser de dois ou três gigabytes, então o download o tempo é muito longo e o Excel não consegue abrir tantos arquivos.
A solução (não muito boa, a solicitação deve ser fragmentada, mas o backend fornece apenas um certo suporte técnico, e esse lixo nunca foi feito): usar websocket para estabelecer um link longo, solicitar recursos diretamente no navegador e no backend Coloque o arquivo Excel diretamente no navegador e coloque vários arquivos Excel, para que a fragmentação do arquivo possa ser obtida indiretamente.
Processo de uso:
created() {
this.initWebSocket();
},
destroyed() {
// 组件销毁时关闭
this.websocketclose();
},
data() {
return {
websock: null,
};
},
methods: {
initWebSocket() {
//初始化weosocket
const wsuri = "ws://172.16:8099"; // 地址更改为需要的地址 : 端口号如果nginx 有做配置可以不加
this.websock = new WebSocket(wsuri); // 创建
this.websock.onmessage = this.websocketonmessage;
this.websock.onopen = this.websocketonopen;
this.websock.onerror = this.websocketonerror;
this.websock.onclose = this.websocketclose;
},
websocketonopen() {
//连接建立之后执行send方法发送数据
this.websocketsend();
},
websocketonerror() {
//连接建立失败重连
this.initWebSocket();
},
websocketonmessage(e) {
//数据接收
const redata = JSON.parse(e.data);
let a = document.createElement("a");
a.href = VUE_APP_BASE + redata.data; // 此处使用公司阿里云服务
a.click();
},
websocketsend() {
//数据发送
this.websock.send(data); // 此处添加需要发送的数据
},
websocketclose(e) {
console.log(e, '建立失败')
},
},