Differences between socket.io and websockets

What are the differences between socket.io and websockets in node.js?
Are they both server push technologies? The only differences I felt was,

  1. socket.io allowed me to send/emit messages by specifying an event name.
  2. In the case of socket.io a message from server will reach on all clients, but for the same in websockets I was forced to keep an array of all connections and loop through it to send messages to all clients.

Also, I wonder why web inspectors(like Chrome/firebug/fiddler) are unable to catch these messages(from socket.io/websocket) from server?

Please clarify this.. Thanks.

Socket.IO uses WebSockets when it can.

Its advantages are that it simplifies the usage of WebSockets as you described in #2, and probably more importantly it provides failovers to other protocols in the event that WebSockets are not supported on the browser or server. I would avoid using WebSockets directly unless you are very familiar with what environments they don't work and you are capable of working around those limitations.

This is a good read on both WebSockets and Socket.IO.

http://davidwalsh.name/websocket