9
我想使用websockets将数据从服务器流式传输到客户端 - 特别是ws和websocket流。然而,该流似乎太早关闭了,我只收到两块值得的数据。这是一个简单的例子。使用ws和websocket流在node.js中流式传输数据
我有一台服务器:
var WebSocketServer = require('ws').Server;
var websocketStream = require('websocket-stream');
var wss = new WebSocketServer({port: 8098});
var fs = require('fs');
var util = require('util');
wss.on('connection', function connect(ws) {
var stream = websocketStream(ws);
var rs = fs.createReadStream('foo.big');
rs.pipe(stream);
});
和连接,并使用管道()流foo.big到本地文件在客户端:
var fs = require('fs');
var util = require('util');
var websocket = require('websocket-stream');
var rs = fs.createWriteStream('big.out');
rs.on('open', function() {
var ws = websocket('http://localhost:8098');
ws.on('open', function() {
ws.pipe(rs);
}).on('error', function (err) {
console.log(err);
}).on('close', function (err) {
console.log("Closing");
});
});
任何想法,为什么我只会越来越几包数据?如果我将客户端中的调用删除,并且只是以块的形式接收数据,它似乎会接收所有数据。
有趣的是,如果我将{end:false}传递给服务器中的pipe()调用,客户端将接收所有数据。这很令人困惑 - 为什么文件系统会提早结束? –