feature(socket) add reconnection delay, max attempts