like zmq, use golang