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');
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}