Why does the following nodejs code not work with socketio+express 3?

I dont get why this does not work:

I have a sample.js containing:

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

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

io.sockets.on('connection', function(client) {
    console.log('Client Connected...');

    client.emit('messages', {hello: 'world'});
});

server.listen(8080);

I have an index.html page that contains:

<!DOCTYPE html>
<html>
    <head>
        <script src="socket.io.js"></script>

        <script>
            var server = io.connect('http://mydomain:8080');
            server.on('messages', function(data) {
                alert(data.hello);
            });         
        </script>
    </head>
    <body>
    </body>
</html>

Update: When using the socket.io-client.js library, when I go to the http://mydomain:8080 page, I get an "info - unhandled socket.io url"

Can someone point out what I may be doing wrong?

Your server's never sending out index.html because you never told it to. You need something like:

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

assuming index.html is at the root level of your app, or, more generally:

app.use(express.static(__DIRNAME+'/public'));

and then put index.html (along with any other static files like stylesheets) in the public subdirectory of your app.