based on socket.io &redis