James, I appreciate the example. I am having to use C and not C++. Do you have an example with the core C code? And not czmq, I am using capnproto-c with zmq. I could not get czmq to work with it.
Thank you for your help On Wed, Sep 19, 2018 at 4:52 AM, James Harvey <jamesdillonhar...@gmail.com> wrote: > Also keep in mind the first byte of the message will be a 0/1 to give the > context. > > So something like this: > > zmq::message_t subscription; > pub_sock_->recv(&subscription); > char* data = (char*)subscription.data(); > > // Subscriptions should start with 0x1 and unsubscriptions 0x0 > if(*data != 0x1) > { > // unsubscribe > } > else > { > // subscribe > } > > std::string sub(data + 1, subscription.size() -1)); > > > > On Wed, Sep 19, 2018 at 11:13 AM Luca Boccassi <luca.bocca...@gmail.com> > wrote: > >> If you call recv on an XPUB socket you'll get the subscriptions coming >> in - no need to use XSUB, will work with SUB too >> >> On Tue, 2018-09-18 at 17:03 -0600, Carol Rice wrote: >> > Thanks for the reply, Bill. >> > >> > I've read the zguide http://zguide.zeromq.org/page: >> > all#The-Dynamic-Discovery-Problem >> > and it appears this is exactly what xpub and xsub does: >> > >> > " We need XPUB and XSUB sockets because ZeroMQ does subscription >> > forwarding >> > from subscribers to publishers. XSUB and XPUB are exactly like SUB >> > and PUB >> > except they expose subscriptions as special messages. The proxy has >> > to >> > forward these subscription messages from subscriber side to publisher >> > side, >> > by reading them from the XPUB socket and writing them to the XSUB >> > socket. >> > This is the main use case for XSUB and XPUB." >> > >> > However, there is no example code for this is the zguide. Are there >> > any >> > examples in C code for using xpub/xsub for exposing subscriptions as >> > special messages? It sounds like this is what I'm looking for, to see >> > a >> > list of all the subscribed topics, or subscriptions. >> > >> > Carol >> > >> > On Tue, Sep 18, 2018 at 2:19 PM, Bill Torpey <wallstp...@gmail.com> >> > wrote: >> > >> > > Hi Carol: >> > > >> > > ZeroMQ actually doesn’t have the concept of “topics”, at least in >> > > the way >> > > that term is used with other middlewares. >> > > >> > > ZeroMQ does filtering on the prefix of a message, which is a bit of >> > > a >> > > different animal. You can use that to create a topic-based >> > > addressing >> > > scheme similar to other middlewares, but it’s not an intrinsic part >> > > of >> > > ZeroMQ. >> > > >> > > When a SUB socket connects to a PUB socket, the list of prefixes >> > > that the >> > > SUB wants to receive are sent to the PUB socket as part of the >> > > connection >> > > process. Then, when the PUB socket wants to send a message to a >> > > SUB >> > > socket, it compares the list of prefixes it maintains for the SUB >> > > socket >> > > against the beginning of the message. If there’s a match, the >> > > message is >> > > sent, otherwise it is discarded. (That list can change over time >> > > as well, >> > > and the SUB sends any changes to all the PUBs that it is connected >> > > to). >> > > >> > > If you follow that through, you can see that to get a list of all >> > > topics >> > > that are being subscribed to, you’d need to ask every subscriber >> > > and >> > > collect the results. Publishers, on the other hand, are not >> > > associated >> > > with topics — the “topic” (actually filter) is associated with the >> > > SUB >> > > socket, although it is evaluated by the PUB socket when it has a >> > > message to >> > > send. (The exception is when using a pgm: transport — since pgm is >> > > multicast, PUB sockets publish everything and it is the SUB socket >> > > that >> > > does the prefix matching when it receives a message). >> > > >> > > If you really need to know which “topics” exist on the network, you >> > > probably want to use XPUB/XSUB sockets (which expose the filters to >> > > the >> > > application), and perhaps also a central ZeroMQ broker. The >> > > http://zguide.zeromq.org/page:all#The-Dynamic-Discovery-Problem >> > > chapter >> > > is a good starting point for learning about how that might work. >> > > >> > > Hope this helps. >> > > >> > > Bill >> > > >> > > > On Sep 18, 2018, at 3:25 PM, Carol Rice <carol.ric...@gmail.com> >> > > > wrote: >> > > > >> > > > I know for pub/sub sockets, I can set the subscriber filter to an >> > > > empty >> > > >> > > string and receive messages from all topics. >> > > > >> > > > But I want to know if there is a way I can publish all available >> > > > topics >> > > >> > > and receive a list of all the available topics to subscribe to? >> > > > >> > > > Thank you for your help. >> > > > _______________________________________________ >> > > > zeromq-dev mailing list >> > > > zeromq-dev@lists.zeromq.org >> > > > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > > >> > > _______________________________________________ >> > > zeromq-dev mailing list >> > > zeromq-dev@lists.zeromq.org >> > > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > > >> > >> > _______________________________________________ >> > zeromq-dev mailing list >> > zeromq-dev@lists.zeromq.org >> > https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> >> -- >> Kind regards, >> Luca Boccassi_______________________________________________ >> zeromq-dev mailing list >> zeromq-dev@lists.zeromq.org >> https://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > > _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > https://lists.zeromq.org/mailman/listinfo/zeromq-dev > >
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org https://lists.zeromq.org/mailman/listinfo/zeromq-dev