【发布时间】:2013-03-26 13:21:06
【问题描述】:
我一直在谷歌上搜索这个并在 stackoverflow 上搜索了一段时间,但没有找到解决方案 - 因此发布了这篇文章。
出于好奇,我正在玩弄 Node.js 和 WebSockets。我正在尝试将一些二进制数据(mp3)流式传输到客户端。到目前为止,我的代码如下,但显然没有按预期工作。
我怀疑我的问题是我实际上并没有从服务器发送二进制数据并且想要一些澄清/帮助。
这是我的服务器...
var fs = require('fs');
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({port: 8080,host:"127.0.0.1"});
wss.on('connection', function(ws) {
var readStream =
fs.createReadStream("test.mp3",
{'flags': 'r',
'encoding': 'binary',
'mode': 0666,
'bufferSize': 64 * 1024});
readStream.on('data', function(data) {
ws.send(data, {binary: true, mask: false});
});
});
还有我的客户……
context = new webkitAudioContext();
var ws = new WebSocket("ws://localhost:8080");
ws.binaryType = 'arraybuffer';
ws.onmessage = function (evt) {
context.decodeAudioData(
evt.data,
function(buffer) {
console.log("Success");
},
function(error) {
console.log("Error");
});
};
对解码的调用总是在错误回调中结束。我假设这是因为它收到了错误的数据。
所以我的问题是如何正确地将文件作为二进制流式传输?
谢谢
【问题讨论】:
-
在我学习 node.js 和 web sockets 时,您能否提供完整的示例或代码,我的要求也相同