docs: function AudioStreamer( port ) {	
  	var self = this;
  	
  	this.server;			// Our server instance (only exists if we're the server)
  	this.clients = [];		// Our list of clients (this.clients[0] is us when we're not the server)
  	this.isServer = true;	// Set when we're a server, owning the port
  	this.port = port;
  
  	// Buffers 
  	this.outgoingBuffers = [];	// Buffers we're sending out to the server
  	this.incomingBuffers = [];	// Buffers we're getting from the server
  
  	// We're going to try to create a server to stream audio. If another
  	// AudioStreamer instance is already sitting on our port, we need to
  	// connect to it. To do this, we try to create a server. If that fails, 
  	// we fall back on acting as a client
  	log( "Attempting to create server" );
  	
  	process.on('EADDRINUSE', function (err) {
  		console.error(err);
  	});		
  	
  	console.log( port );
  	this.server = BinaryServer( {port: this.port} );
  	
  	this.server.on( "error", function( error ) {
  		log( "Failed to start server " + error );		
  		log( "Acting as a client" );		
  		self.clients.push( new BinaryClient('ws://localhost:' + port) );		
  		self.isServer = false;
  	});		
  	
  	this.server.on( 'connection', function(client) {
  		log( "Recieved connection from client" );		
  		
  		self.clients.push( client );
  		
  		client.on( 'stream', function(stream, meta) {
  			stream.on( 'data', function(data) {
  				self.incomingBuffers.push( data.buffer )
  			});
  		});
  	});
  	
  	// We're going to check for new outgoing buffers as often as possible
  	setInterval( function() {	
  		if( self.outgoingBuffers.length > 0 ) {
  			for( var iBuffer=0; iBuffer<self.outgoingBuffers.length; ++iBuffer ) {
  				// Send our queued buffers out to all of our clients
  				for( var iClient=0; iClient<self.clients.length; ++iClient ) {
  					self.clients[iClient].send( {buffer: self.outgoingBuffers[iBuffer]} );
  				} // end for each client
  			} // end for each buffer
  		
  			// Clear the buffer queue
  			self.outgoingBuffers.length = 0;
  		}
  	}, 0 );
  }