add optional timeout argument in channel.connect
add client side ignore heartbeat option