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');