Node.js Express 3 not serving socket.io.js

I'm trying to follow the instructions here

http://socket.io/#how-to-use

However, I seem too dumb to understand why I cannot reference socket.io.jss on the client side. I've read similar posts here but they don't seem right: NodeJS Express not serving '/socket.io/socket.io.js'

Here's the full app listing:

var application_root = __dirname,
    express = require('express'),
    //Web framework
    path = require('path'),
    //Utilities for dealing with file paths
    pg = require('pg'); //Postgres integration

//Create server
var app = express();


// Configure server
app.configure(function () {
    //parses request body and populates request.body
    app.use(express.bodyParser());

    //checks request.body for HTTP method overrides
    app.use(express.methodOverride());

    //perform route lookup based on url and HTTP method
    app.use(app.router);

    //Where to serve static content
    app.use(express.static(path.join(application_root, 'public')));

    //Show all errors in development
    app.use(express.errorHandler({
        dumpExceptions: true,
        showStack: true
    }));
});


//Start server
var port = 4711;
app.listen(port, function () {
    console.log('Express server listening on port %d in %s mode', port, app.settings.env);
});

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

Now if I try to reference the client-side js, I get a 404.

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

Anyone know why Express 3 is not allowing socket.io to serve its client lib?

I found the answer here

Socket.io is not served in /socket.io/socket.io.js

Read through http://expressjs.com/api.html#app.listen, note how app.listen is defined.

In short: replace app.listen with server.listen.