我有一个NodeJS服务器,它记录二进制数据(作为WAV文件),通过WebSocket从带有麦克风的客户端浏览器(Chrome)流式传输到它。此在非SSL连接上正常工作(ws://…),但在SSL上不正常(wss://...)-音频完全静止。
我想知道SSL加密是否干扰了服务器接收到的二进制数据。
服务器
var WebSocketServer = require('ws').Server,
wav = require('wav'),
http = require('https');
var app = http.createServer({
key: fs.readFileSync('test.key'),
cert: fs.readFileSync('test.crt')
}).listen(9001);
var ws = new WebSocketServer({server: app});
ws.on('connection', function(client) {
var fileWriter = new wav.FileWriter(myFilePath, {
channels: 1,
sampleRate: 48000,
bitDepth: 16
});
var data = new Buffer(0);
client.on('message', function(newData) {
data = Buffer.concat([data, newData], data.length + newData.length);
});
client.on('close', function() {
fileWriter.write(data);
fileWriter.end();
});
});
客户端(注意,客户端正在使用RecordRTC.js:http://recordrtc.org/RecordRTC.html,这些是向服务器发送数据的主要部分)
var audioProcess = function(e) {
// get binary audio data and send to server using the open stream
var left = e.inputBuffer.getChannelData(0);
stream.write(convertoFloat32ToInt16(left));
};
var convertoFloat32ToInt16 = function(buffer) {
var l = buffer.length;
var buf = new Int16Array(l);
while (l--) {
buf[l] = buffer[l]*0xFFFF; //convert to 16 bit
}
return buf.buffer
};
提前感谢您的任何见解/解决方案!
我在web套接字方面也遇到了同样的问题,最后我使用了BinaryJS。创建一个https服务器,然后在其上附加一个二进制服务器。对我来说很好。