使用 Web 套接字和 ReactJs 流式传输每个文件的内容
Posted
技术标签:
【中文标题】使用 Web 套接字和 ReactJs 流式传输每个文件的内容【英文标题】:Stream the contents of each file using web sockets and ReactJs 【发布时间】:2017-03-19 17:25:17 【问题描述】:我正在尝试读取目录的文件并使用套接字我必须使用 React 呈现文件名和文件数据。
这是我所做的:
服务器:
var files = fs.readdirSync(currentPath);
for (var i in files)
(function(j)
var currentFile = currentPath + '/' + files[j];
var fileName = files[j];
var stats = fs.statSync(currentFile);
if (stats.isFile())
fs.readFile(currentFile, function (err, data)
if (err)
throw err;
if (data)
var fileAndData=currentFile+" "+data.toString('utf8')
io.emit('file data',fileAndData);
console.log("file name and file data ***",currentFile+data.toString('utf8'));
);
else if (stats.isDirectory())
traverseFileSystem(currentFile);
)( i );
客户: 父组件:
class FileData extends Component
constructor(props)
super(props);
this.state =
filedata:null,
filename:null,
data:[]
componentDidMount()
socket.on('file data', function(msg)
this.state.data.push(msg);
// this.setState(filename:msg)
.bind(this));
render()
return(<div>
<DataCard data=this.state.data/>
</div>);
ReactDOM.render(
<FileData/>,document.getElementById('messages')
);
客户端:子组件
constructor(props)
super(props);
this.state=data:this.props.data
render()
console.log("array",Array.isArray(this.state.data))
console.log("array length",this.state.data.length)
console.log("array is ==>",this.state.data)
return(
<MuiThemeProvider>
</MuiThemeProvider>);
我想使用 map 显示数据和文件名和文件数据。但是当我在安慰子组件中收到的数据时,数组长度为零。这里是
console result :
array true
array length 0
array is ==> Array[0]0: "/vagrant/assignment/server/data//file 1.txt hello from file 1."1: "/vagrant/assignment/server/data//file 2.txt hello from file 2."length: 2__proto__: Array[0]
如果长度为零,为什么第三个控制台显示 2 个数据。
【问题讨论】:
【参考方案1】:你不能通过 this.state.data.push(msg);
改变状态
试试
var data = this.state.data;
data.push(msg);
this.setState(data: data);
【讨论】:
谢谢squall3d,错误是因为render() return(加载中
以上是关于使用 Web 套接字和 ReactJs 流式传输每个文件的内容的主要内容,如果未能解决你的问题,请参考以下文章
使用套接字 IO 和 Node JS 通过套接字流式传输麦克风
如何在 iOS swift 中使用 UDP 套接字流式传输音频?
使用 AVFoundation 在 iOS 上播放套接字流式传输的 h.264 电影