Socket.io integration