client event listen and emit