我米目前使用ZMQ与蟒蛇。 服务器使用REP插座。
我有一个办法,recv的消息时,才知道谁送的呢? 如果收到2个消息,我只需要知道,如果他们来自同一个用户或没有,所以例如一个UID就足够了。
我米目前使用ZMQ与蟒蛇。 服务器使用REP插座。
我有一个办法,recv的消息时,才知道谁送的呢? 如果收到2个消息,我只需要知道,如果他们来自同一个用户或没有,所以例如一个UID就足够了。
它看起来像你想实现在服务器端异步请求处理:你让服务器接受请求,处理它们异步,并发送响应返回给客户只要响应数据可用于每个请求。 当然现在:你怎么知道,你就大功告成了处理请求,将其发送回给哪个客户端后?
通过简单的REP插座,ZMQ确保你不会被强制执行碰上这类问题recv() -> send(), recv() -> send()
顺序性。 换句话说,你做了之后recv()
上REP插座,你必须做一个send()
之前recv()
再次从它ING。 响应将被发送回你从邮件客户端,而且也毫无疑问的客户端的地址,因为它只有一个客户在同一时间。
但是,这并不能真正帮助,当你想并行请求处理,不是吗? 有很多情况下,当REP的行为过于严格,这正是多部分消息和路由器(或XREP)插座是。 XREP打破recv() -> send()
REP的步调一致,但会导致一个问题,因为我们在前面看到的-你怎么知道的发送应答的客户端回,如果多个客户端连接? 为了完成这项工作,在XREP ZMQ增加了一个消息部分的消息的前部,像一个信封,其包括连接的身份,它recv()
倒是从请求。
还有的ZMQ指南中关于一整章先进的请求-回复模式 。 您还可以找到用于处理异步请求的例子在这里和ZMQ连接处理的一个很好的简短说明这里 。
阅读http://zguide.zeromq.org/page%3aall#Transient-vs-Durable-Sockets ,你只能得到你正在使用的插座的标识...不是你所连接的任何同行的插座至。
这是说,只是生成发送信息到消息。 这应该是容易做到(或者与每个客户端UUID或特定名称)。