socket.io é uma biblioteca que serve para manter uma comunicação em tempo real, bidirecional e que se baseia em eventos que acontecem entre o navegador e o servidor.
Como funciona?
O client (o usuário usando o navegador) tentará estabelecer uma conexão websocket, ou recorrerá à pesquisa longa do protocolo HTTP caso não faça essa conexão.
O que o socket.io não é:
Muita gente acha que é a mesma coisa ou que é uma implementação dos websockets, mas não é. O socket.io usa websockets sim, mas apenas como um transporte de metadados.
saiba mais na documentação.