title: private chat with socket.io
body: <p>I'm having trouble with my chat app, I need to be able to send a private message to a specific user, I was able to select that specific user but for some reason couldn't figure out how to send the private message.</p>
  
  <p>Below you will find the code for my server,  please help:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var express = require('express');
  var app = express();
  var PORT = process.env.PORT || 8000;
  var http = require('http').Server(app); // this is a node server that uses express as the boiler plate
  var io = require('socket.io')(http); // socket! pass our server as a parameter to it
  
  
  // use express static to expose a folder
  app.use(express.static(__dirname + '/public'));
  
  var users = [],
   connections = [];
  var onlineClients = {};
  
  
  
  
  // Register events on socket connection
  io.on('connection', function(socket){ 
   connections.push(socket);
   // console.log("connected socket", connections);
  
   socket.on("disconnect", function() {
    users.splice(users.indexOf(socket.username), 1);
    updateUsernames();
    connections.splice(connections.indexOf(socket), 1);
    console.log("disconnected socket", connections.length)
   });
  
   socket.on("send message", function(data) {
    // console.log(data);
    io.emit("new message", {msg: data, user: socket.username});
   });
  
  
   socket.on("notify user", function(data) {
    io.emit("notify user", {user: socket.username})
   });
  
  
   socket.on("new user", function(data) {
    socket.username = data;
    users.push(socket.username);
    updateUsernames();
  
   });
  
   function updateUsernames() {
    io.emit("get users", users);
   };
  
   socket.on("private", function(data, recipientName) {
    var recipient = connections.filter(function (recipient) {
     return recipient.username === recipientName;
    })[0];
     console.log(recipient.id);
     console.log(data);
    io.sockets.socket(recipient.id).emit("received private msg", data);
  
   });
  
  
   // socket.on("create room", function(room) {
   //  socket.join(room);
   //  io.sockets.in(room).emit('event', "hey wusup am in this room");
   //  console.log(socket);
  
   // })
  
  });
  
  http.listen(PORT, function(){
    console.log('Server started on port ' + PORT);
  });</code></pre>
  </div>
  </div>
  </p>