ZeroMQ:如何将消息发送给特定用户
在我的场景中有n个客户端和1个服务器。 客户端向服务器发送请求并接收响应。 此外,还需要一个单向消息传递机制,其中服务器向特定客户端发送特定消息,并且没有答案。 所以服务器必须能够专门用单向消息机制来处理客户端。
请求 - 响应部分很简单(REQ和REP套接字),但我不确定如何实现单向消息传递部分。 我尝试使用PUB和SUB套接字,每个用户从服务器请求一个ID,并仅订阅具有此ID的消息,如下所示:
rc = zmq_setsockopt (subscriber, ZMQ_SUBSCRIBE,
subscriber_id, strlen (subscriber_id));
这在理论上是有效的,但问题是这些消息都是广播的,然后在客户端进行过滤,这对我来说不是一种选择。
所以我的问题是:是否有更好的方式来解决特定的客户?
所以,只有两种方法可以做你想做的事情,而且他们都不会直接击中目标 - 但最终我会提出一个可能会更好的建议。
要求服务器套接字直接连接到客户端套接字只能通过以下两种方式完成:
如果它需要是单向套接字类型,那么第二种方法是您剩下的唯一选项。 然后,您可以选择任何单向通信策略(PUB / SUB,PUSH / PULL),并为每个连接设置一个新的套接字。
我强烈建议使用ROUTER选项,几乎没有理由强制单向要求。 只需在ROUTER上将接收HWM设置为1,并忽略或放弃定期发送给它的消息。 或者,跳过REP / REQ对,用ROUTER / DEALER完成所有工作,这可能是最好的选择。
链接地址: http://www.djcxy.com/p/18377.html