use channel to recv/send message