Skip to content

Instantly share code, notes, and snippets.

@gurjeet
Forked from pedromtavares/gist:1136121
Created October 14, 2012 04:03
Show Gist options
  • Save gurjeet/3887248 to your computer and use it in GitHub Desktop.
Save gurjeet/3887248 to your computer and use it in GitHub Desktop.
nodejs streamer
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