我正在尝试使用WebSockets将数据从服务器流式传输到客户端--特别是使用ws和websocket stream。然而,流好像关闭得太早了,我只收到了两个数据块。这是一个简单的例子。
我有一个服务器:
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);
});
同时还需要一个客户端,使用 pipe() 连接并流式传输 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");
});
});
你有什么想法为什么我只能得到一些数据包?如果我在客户端中删除对管道的调用,只是分块接收数据,看起来似乎可以接收所有数据。