Socket.io 写入文件到用户磁盘

Socket.io write file to user disk

我有一个带有按钮的 Node.js 网络应用程序。按下此按钮时,它会收集数据并将数据发送到 socket.io 函数。这是客户端代码:

$("body").on('click', ".download", function() {
             
    var data = [1,2,3,4,5];
  
    socket.emit('download_data', data);
}

在服务器端我有一个获取数据的socket.io函数:

socket.on('download_data', function(data){
    //create csv and download
});

我想要套接字函数用生成的数据创建一个 CSV 文件并将该文件写入用户磁盘。这可能吗?

在服务器端,生成CSV文件内容:

csv = '';
data.forEach(row => { // Assuming an array of arrays.
  csv += row.join(';') + '\n';
});

Return给客户端的内容:

socket.emit('csv_content', csv);

在客户端,要求用户下载或打开。我在这里使用文件保护程序包。

import { saveAs } from 'file-saver';

const blob = new Blob([content], { type: "text/csv;charset=utf-8" });
saveAs(blob, "data.csv");

不确定为什么为此使用 socket.io,因为您可以对 HTTP POST 操作执行相同的操作。