Sorry, I meant Pieter.
On 20 June 2014 12:05, Marcus Ottosson <[email protected]> wrote: > Hi Peter, thanks for your reply. > > This makes sense, but I'm attempting to run an arbitrary number of peers > and they can't all be bound to the same port, can they?. I'm definitely no > expert, so do go basic on me, that is ok. > > In a nutshell, I'm attempting to mimic real-life in which people > continuously broadcast information about themselves; their location, > appearance and so on and then having an arbitrary amount of spectators take > part in this information flow - i.e. the equivalent of looking out onto a > crowd of people. > > I would understand if it isn't straightforward, but do you think there's a > way? I'd assume the traditional method would be to introduce a broker, but > I'd rather not as it violates the real-life equivalent. I'd like each > available peer (on a single workstation, this isn't to be run on a network) > to continuously broadcast information about themselves, without a central > broker. > > Best, > Marcus > > > On 20 June 2014 11:57, Pieter Hintjens <[email protected]> wrote: > >> You are rather abusing the tcp:// transport, as well as the pub/sub >> metaphor. This simply will not work without artificial waits. >> >> Proper design would be: keep the socket bound, and send a message once >> a second. Subscribe, get one message, disconnect. >> >> On Fri, Jun 20, 2014 at 12:13 PM, Marcus Ottosson >> <[email protected]> wrote: >> > Hi all, first time on this mailing-list, let me know if anything is >> amiss. >> > >> > I originally posted on Stackoverflow but had previously seen mentions of >> > otherwise posting on an active mailing-list so here goes. >> > >> > Why isn’t this working? >> > >> > peer.py >> > >> > import zmq >> > import time >> > >> > if __name__ == '__main__': >> > context = zmq.Context() >> > >> > socket = context.socket(zmq.PUB) >> > >> > while True: >> > print "I: Publishing" >> > >> > socket.bind("tcp://*:5555") >> > socket.send_multipart(['general', 'Unique peer information']) >> > socket.unbind("tcp://*:5555") >> > >> > time.sleep(1) >> > >> > scanner.py >> > >> > import zmq >> > >> > if __name__ == '__main__': >> > context = zmq.Context() >> > >> > socket = context.socket(zmq.SUB) >> > socket.setsockopt(zmq.SUBSCRIBE, 'general') >> > socket.connect("tcp://localhost:5555") >> > >> > print "I: Scanning 5555" >> > >> > while True: >> > message = socket.recv_multipart() >> > print "I: Receiving: {}".format(message) >> > >> > I’m attempting to broadcast multiple peers over the same port, on the >> same >> > computer and have a single “scanner” listen in and “see” who is >> available. >> > Each peer would broadcast its contact information, a client would then >> use >> > the scanner to find out who is available and then use the broadcasted >> > information to connect via a REQ/REP channel. >> > >> > To make this work, I’ve attempted to quickly bind a PUB socket, >> broadcast >> > information about a peer, and then unbind so as to let other peers bind >> to >> > the same socket, at a different time, and broadcast a different set of >> > identifiers for the next peer. >> > >> > I’m suspecting that messages get discarded before getting sent due to >> the >> > unbinding (the same occurs with a call to close()) but I can’t figure >> out >> > how to get it to empty the queue prior to closing the connection so as >> to >> > not discard any messages. >> > >> > Any ideas? >> > >> > Windows 8.1 x64 >> > Python 2.7.7 x64 >> > PyZMQ 4.0.4 >> > >> > Thanks >> > >> > -- >> > Marcus Ottosson >> > [email protected] >> > >> > _______________________________________________ >> > zeromq-dev mailing list >> > [email protected] >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > >> _______________________________________________ >> zeromq-dev mailing list >> [email protected] >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > > > > -- > *Marcus Ottosson* > [email protected] > -- *Marcus Ottosson* [email protected]
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
