Messages travel from a REQ node (client) to a REP node (service) and back again.
require 'nanomsg'

req = NanoMsg::ReqSocket.new
req.connect('tcp://127.0.0.1:4568')

req.send 'req 1'
p req.recv # => "rep 1"
require 'nanomsg'

rep = NanoMsg::RepSocket.new
rep.bind('tcp://127.0.0.1:4568')

rep.recv # => 'req 1'
rep.send 'rep 1'