refactor AsyncSockMessageChannel, add new method to MessageChannel