当与 ØMQ 套接字类型一起使用时,X 是什么意思?

What does X mean when used with ØMQ socket types?

ZeroMQ定义了一系列socket类型,通常称为SUBPUBXSUBXPUBDEALER...

翻阅一些API代码,有XSendXHasInXHiccupped.

等方法

这些 X 个字符似乎被用作语义修饰符。它们的使用有什么规律或意义吗?

当应用于套接字类型时,x 表示套接字以某种方式公开协议的原始元素,否则这些元素将被更常见的套接字类型隐藏。

以xSUB & xPUB为例。

PUB/SUB 通常只以一种方式通信,PUB 发送,SUB 接收。但是使用 xPUB/xSUB,协议的其他隐藏元素被暴露:xSUB 向 xPUB 发送 "subscribe" 消息,xPUB 可以接收该消息,您可以看到它以更有趣的方式对其进行操作而不仅仅是为该订阅维护和发送数据。

同样,曾经有xREP和xREQ。在ZMQ中,REP/REQ对他们send/receive消息的顺序有非常严格的要求。这些要求由未公开的套接字协议的低级元素强制执行。 xREP 和 xREQ 允许您通过公开强制您遵循这些消息模式的元素来打破这些要求。这些套接字类型非常有用,最终演变成 ROUTER 和 DEALER 套接字。

我还没有看到足够低的层次来确切地说出为什么会有 xsend 等方法,但我的直觉是它们是 [=10= 中这些方法的版本] 旨在公开这些协议元素的套接字类型。