using socket.io in conjunction with express

I am trying to sent a basic message when users connect and disconnect. Later i want to sent parameters back and forth. But with the following code i do not get the messages print out on the server when they connect/disconnect.

When i replace io.on with server.on i can get the message 'User connected' but not user disconnected when i refresh/close the page. This however is buggy, since not everytime i refresh it logs the message and on first time it sometimes log the message multiple times.

server.js

var //io      = require('socket.io'),
    http    = require('http'),
    express = require('express');

var PORT = process.env.PORT || 8080,
    HOST = process.env.HOST || 'localhost';

var app = express();
app.use(express.static(__dirname + '/views'));

app.get('/', function (req, res) {
    res.sendfile(__dirname + 'index.html');
});

server = http.Server(app);
//io = io.listen(server);
var io = require('socket.io')(server);

io.on('connection', function(socket){
    console.log('User connected');


    io.on('disconnect', function(socket) {
        console.log('User Disconnected');
    });
});


server.listen(PORT, HOST, null, function() {
    console.log('Server listening on port %d in %s mode', this.address().port, app.settings.env);
});

New code:

var express = require('express'),
    app = express(),
    http = require('http'),
    server = http.createServer(app),
    io = require('socket.io').listen(server);


var PORT = process.env.PORT || 8080,
    HOST = process.env.HOST || 'localhost';


server.listen(PORT);

app.use(express.static(__dirname + '/views')); //need this for my directory structure.


app.get('/', function (req, res) {
    res.sendfile(__dirname + 'index.html');
}); //Need this to call my page.


io.on('connection', function( client ){
    console.log('Connected');//this does not work.


    io.on('disconnect', function( client) {
        console.log(client);
    });
});

Try reconfiguring your socket, and server instantiation:

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(process.env.PORT || 3000);

io.on('connection', function( client ) {
    console.log(client) //this will now work

   client.on('disconnect', function( id ) { 
       console.log('user with ID ' + id + ' has disconnected');
   });
});

First of all you need to be sure if you have included the client side socket.io files.

<script src="/socket.io/socket.io.js"></script>

Then you need to initialize the socket connection.

<script>
 var socket = io();
 </script>

The above changes will be in your index.html file.

Now in server.js file,

io.sockets.on('connection', function(socket) {
    console.log("User connected");
   socket.on('disconnect', function() {
      console.log('Got disconnect!');

   });
});