add support for socket.io