Unable to receive events in SOCKET.IO client

I am new to socket.io and i am trying out the examples mentioned on their site. I am going good with it but problem occurs when i try to use io.emit on the server side and try to receive on client side.

Here is my server code

var io=require("socket.io").listen(8888);
io.set('log level',1);
io.on('connection',function(socket){ 
socket.emit('hi');
console.log("Connected");
});

And my client's code

<script src="http://localhost:8888/socket.io/socket.io.js"></script>
<script>
var socket=io.connect("http://localhost:8888");
socket.set('log_level',1);
socket.on('hi',function(){
console.log('received');
});
</script>

The problem is i don't see the message 'received' in the console! The answer may be trivial but i tried experimenting but failed everytime. Please guide....

I am on ubuntu firefox. node version: 0.8.7

So you should have this on the serve side:

var io = require('socket.io').listen(88888);
io.set('log level',1);
io.sockets.on('connection', function (socket) {
  socket.emit('hi);
  console.log("Connected");
  });
});

And you should have this on the client side:

<script src="http://localhost:8888/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:8888/');
  socket.set('log_level',1);
  socket.on('hi', function () {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

WebSockets like many html5 features does not work in a non webserver environment. I mean It won't work if you are accessing your client with the file protocol. You need to have a http server. What I do to get things done easily, I use python built-in web-server. It does the job. Just spawn it in you client folder like this:

python -m SimpleHTTPServer

And then point your browser to port 8000 (default).

I've made a boiler plate socket.io app that you can clone and even push directly to dotCloud.com
This is a simple example and could help you to get started with socket.io.

Look for examples on the soket.io GitHub page.

You wrote: io.on('connection' instead io.sockets.on('connection'

This code should work fine:

var io = require('socket.io').listen(8888);
io.set('log level', 1);
io.sockets.on('connection', function(socket){ 
    socket.emit('hi');
    console.log("Connected");
});