2012/8/21 Pieter Hintjens <[email protected]>:
> On Tue, Aug 21, 2012 at 1:41 PM, Chuck Remes <[email protected]> wrote:
>
>> http://www.zeromq.org/tutorials:xreq-and-xrep
>> Before we renamed them, DEALER was XREQ and ROUTER was XREP so all of the 
>> same information still applies.
>
> I've moved that page to
> http://www.zeromq.org/tutorials:dealer-and-router and fixed up the
> text.
>
> #itsawiki
>
> -Pieter
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev


I've read everything I found but still far from being really clear..

So I found the router examples (rrserver/rrclient) and so one, and I
can write a broker like this:

def broker():
    context = zmq.Context()
    frontend = context.socket(zmq.ROUTER)
    frontend.bind(FRONT_PORT)

    backend = context.socket(zmq.DEALER)
    backend.bind(BACK_PORT)

    poll = zmq.Poller()
    poll.register(frontend, zmq.POLLIN)
    poll.register(backend, zmq.POLLIN)

    while True:
        socks = dict(poll.poll())
        if socks.get(frontend) == zmq.POLLIN:
            msg = frontend.recv()
            more = frontend.getsockopt(zmq.RCVMORE)
            if more:
                backend.send(msg, zmq.SNDMORE)
            else:
                backend.send(msg)

        if socks.get(backend) == zmq.POLLIN:
            message = backend.recv()
            more = backend.getsockopt(zmq.RCVMORE)
            if more:
                frontend.send(message, zmq.SNDMORE)
            else:
                frontend.send(message)

And here the identity of the sender is handled automatically, and how
should I fetch it in theory?


And what if I wanted to have only the dealer or only the router?
I tried with something like this:

def router():
    context = zmq.Context()
    frontend = context.socket(zmq.ROUTER)
    frontend.bind(FRONT_PORT)
    backend = context.socket(zmq.REQ)
    backend.connect(BACK_PORT)

    while True:
        _id = frontend.recv()
        frontend.recv()
        query = frontend.recv()
        print("received ", _id, query)
        #
        backend.send(query)
        ans = backend.recv()
        print("received answer", ans)
        frontend.send(_id)
        frontend.send('')
        frontend.send(ans)

and now I actually receive the message in three parts, with the id and
an empty message, but does it make sense to forward it like this to the server?
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to