我目前正在使用zmq和python.服务器正在使用REP套接字.
在收到消息时,我有办法知道是谁发送的吗?如果收到2条消息,我只需要知道它们是否来自同一个用户,所以例如uid就足够了.
Luc*_*oca 15
看起来您希望在服务器端实现异步请求处理:您让服务器接受请求,异步处理它们,并在响应数据可用于每个请求时将响应发送回客户端.现在当然:在您处理完请求后,您将如何知道将哪个客户端发送回去?
使用简单的REP套接字,ZMQ确保您不会通过强制执行recv() -> send(), recv() -> send()顺序性来解决此类问题.换句话说,在recv()对REP套接字执行操作之后,必须再次执行此操作.响应将被发送回您收到消息的客户端,并且毫无疑问客户端的地址,因为它一次只有一个客户端.send()recv()
但是当你想要并行化请求处理时,这并没有什么帮助,是吗?在很多情况下,REP的行为限制太多,而这正是Multipart消息和ROUTER(或XREP)套接字的用途.XREP打破了recv() -> send()REP 的锁步,但这导致了我们之前看到的问题 - 如果连接多个客户端,您如何知道将回复发送回哪个客户端?为了使这项工作,ZMQ中的XREP在消息的前面添加了一个消息部分,如信封,其中包含它所recv()请求的连接的标识.
ZMQ指南中有一整章关于高级请求 - 回复模式.您还可以找到用于处理异步请求的例子在这里和ZMQ连接处理的一个很好的简短说明这里.
| 归档时间: |
|
| 查看次数: |
7438 次 |
| 最近记录: |