Created
August 10, 2011 04:27
-
-
Save pedromtavares/1136121 to your computer and use it in GitHub Desktop.
nodejs streamer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var http = require('http'); | |
var url = 'http://radio.pedromtavares.com:10000'; // URL to a known Icecast stream | |
var icecast = require('icecast-stack'); | |
var stream = icecast.createReadStream(url); | |
// var radio = require("radio-stream"); | |
// var stream = radio.createReadStream(url); | |
var clients = []; | |
stream.on("connect", function() { | |
console.error("Radio Stream connected!"); | |
//console.error(stream.headers); | |
}); | |
// Fired after the HTTP response headers have been received. | |
stream.on('response', function(res) { | |
console.error("Radio Stream response!"); | |
console.error(res.headers); | |
}); | |
// When a chunk of data is received on the stream, push it to all connected clients | |
stream.on("data", function (chunk) { | |
if (clients.length > 0){ | |
for (client in clients){ | |
clients[client].write(chunk); | |
}; | |
} | |
}); | |
// When a 'metadata' event happens, usually a new song is starting. | |
stream.on('metadata', function(metadata) { | |
var title = icecast.parseMetadata(metadata).StreamTitle; | |
console.error(title); | |
}); | |
// stream.on("metadata", function(title) { | |
// console.error(title); | |
// }); | |
// Listen on a web port and respond with a chunked response header. | |
var server = http.createServer(function(req, res){ | |
res.writeHead(200,{ | |
"Content-Type": "audio/mpeg", | |
'Transfer-Encoding': 'chunked' | |
}); | |
// Add the response to the clients array to receive streaming | |
clients.push(res); | |
console.log('Client connected; streaming'); | |
}); | |
server.listen("9000", "127.0.0.1"); | |
console.log('Server running at http://127.0.0.1:9000'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment