You can't do duplex properly as a client. The main difference between a JACK "driver" (aka "backend") and a client is that a driver consists of two halves. One is executed at the start of a process cycle, to collect data from the hardware; the other is executed at the end of a process cycle, to deliver data to the hardware.