模仿 ZeroMQ SUB-Socket(在 PUB/SUB 系统中),例如Socket/WebSocket 在颤动中

Mimic ZeroMQ SUB-Socket (in a PUB/SUB system) with e.g. Socket/WebSocket in Flutter

社区,

我想在实现 ZeroMQ (https://zeromq.org/)

的服务器上 use/subscribe 一个 pub-socket

我的最终产品将是一个 flutter 应用程序。它必须在 Android/iOS/Windows/MacOS/Linux/Web 上 运行ning。所以我非常小心选择插件。我不想让自己负担大量特定于平台的代码,我也不想依赖在每个平台的特定条件下可能 break 的插件。

我知道在不同平台的可操作性方面有一个ZeroMQ-Plugin, but it has some Unresolved Issues。我还尝试在不同的 Windows 机器上 运行 它,但它只在大约 25% 的情况下有效。

这是应用程序和服务器之间的基本网络通信(见下图)。

是否可以连接到 ZeroMQ-Publisher-Socket 而无需实现或依赖于 ZeroMQ 的 C++ 编译文件?我正在考虑 SocketWebSocket,但我什至不确定它在技术上是否可行(协议等),因为我认为 ZeroMQ 使用它自己的协议(请验证)。

我可以在 Flutter 中使用 SocketsWebSockets 订阅 ZeroMQ-Publisher-Socket 吗?如果是,如何?有其他选择吗?

dartzmq/install

此致

Q1 :
"Is it possible to connect to a ZeroMQ-Publisher-Socket WITHOUT implementing or depending on the C++ compiled file of ZeroMQ?"

A1 :
是的,是的。 re-implement 已发布的 ZeroMQ ZMTP RFC-s 与 use-case 相关就足够了,如果它满足所有ZMTP RFC-s' 强制要求。所以这是可行的。

Q2 :
"... ZeroMQ uses it's own protocoll (please verify)."

A2 :
不,在OSI-ISO-L2/L3堆栈的意义上。
是的,在更高层的意义上application-driven 协议,其中 ZMTP RFC-s 适用于大多数 ZeroMQ 可扩展正式通信模式的原型( 可以在 ZeroMQ sockets are not sockets as you know them 上阅读更多内容),但是也是在需要时与 O/S plain-sockets' fd-s 交互的工具。这里仍然适用A1。

Q3 :
"Can I subscribe to a ZeroMQ-Publisher-Socket with ...? If yes, how?"

A3 :
是的,当您的代码遵循已发布的 ZMTP RFC-s 时,这是可能的。实施所有 ZMTP RFC-s' 强制属性,并且您被授予与任何其他 ZeroMQ-ZMTP-RFC-s' 兼容节点的互操作性。

Q4 :
"Are there alternatives?"

A4 :
是的,如果你的设计可以扩展Server-side,在那里添加另一个AccessPoint-s,使用ZMQ_STREAM Scalable Formal Communication Archetype 在那里,可能会减少你的 Flutter-side ZMTP RFC-s 所需的范围,因为与本地 plain-socket 的接口将是唯一要处理的接口,其“功能差距”可以是在 link 的 Server-side 上处理(轻松处理所有订阅管理和消息过滤,必须满足 ZeroMQ ZMTP RFC-s,所以为什么不在 Server-side 中串联它在将 down-stream 连接到 Flutter App 之前 - 聪明,不是吗?)