sockets - ZMQ用户过滤

标签 sockets zeromq

根据下面的讨论

Can ZMQ publish message to specific client by pub-sub socket?

当订户不提供过滤器时,似乎不可能阻止订户接收所有消息。

是否可能,不提供过滤器的订户将不会收到任何消息?即,如果订阅者知道确切的过滤器(没有通配符等),则仅接收消息。

最佳答案

在主题上似乎有些困惑。让我们揭开 PUB-SUB 的神秘面纱

情况1)“不提供过滤器”的SUB

实例化后,这是默认的初始状态

aSub_signallingChannelEND = aCentralCONTEXT.socket( zmq.SUB )

在这种初始状态下,自然没有有效的预订(预设)集,因为Context()是一个理性过程(不是Norn),因此它不能先验地假定任何此类通用有效的预订 key (并且它将如果可以的话,还是很漂亮的Orwellish,不是吗?),以便灌输一个SUB -instance,使其自诞生之日起就“呼吸”。

在原始 ZeroMQ v2.x 中(请注意,该文档对于ZeroMQ库的最新版本无效),但是此状态并不意味着 SUB 端实际上不会收到任何消息。 v2.x订阅过滤是在 SUB -端执行的(无论是由于性能决定而定),因此仍然可以通过电线级检测“未经授权”的消息

情况2)“提供了所有过滤器的超集”的SUB

简化版:
原则上, PUB -side本质上没有控件来区分关于订阅内容和取消订阅内容的 SUB -side决定。

如何使其以给定的方式工作?

以此方式定义了 PUB-SUB 消息传递模式后,您必须帮助自己完成PUB-SUB模式之外的身份验证需求的智能层设置,或者可以使用其他方式来添加基于身份验证的保护(例如,为基于身份验证的代码/解码内容的选择性能力确定了正确的权利/关键,以突出显示一些可能的方法)。

关于sockets - ZMQ用户过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624189/

相关文章:

python - 使用套接字不断运行 server.accept() 是否安全?

node.js - 如果在 ('data' 上的 zmq 中使用 console.log,则会出现 SlowBuffer 消息...)

python - ZeroMQ 第二次连接因 einval 失败

android - 通过反向代理服务器将 socket.io android 客户端连接到套接字服务器

python - ZeroMQ 清理 PULL 套接字 - 半关闭

在发布者中创建主题 (ZeroMQ)

c++ - 在 Visual Studio '13 项目中设置 ZeroMQ

c# - Socket接收数据时设置ReceiveTimeout

java - Android < 5.0 (Lollipop) 中存在 TLSv1.2 问题的套接字握手

java - 动态设置除 SSLSocket.setEnabledProtocols 之外的 setEnabledProtocols