Migrate to socket.io