const WebSocket = require('ws');
const fs = require('fs');
const path = require('path');
// Define the output file path
const outputFilePath = path.join(__dirname, 'received_stereo_audio.raw');
// Create a writable stream to the output file
const writeStream = fs.createWriteStream(outputFilePath, { flags: 'w' }); // 'a' flag for appending
// Create a WebSocket server
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('message', (message) => {
// We expect binary data (ArrayBuffer)
if (typeof message === 'object' && message instanceof Buffer) {
// Write the received data directly to the file
writeStream.write(message);
console.log(`Received ${message.length} bytes of stereo audio data and wrote to file`);
}
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
// Handle server close to properly close the file stream
wss.on('close', () => {
writeStream.end(); // Close the file stream
console.log('WebSocket server closed, file stream ended');
});
console.log('WebSocket server is listening on ws://localhost:8080');