javascript客户端中的ZeroMQ
Posted
技术标签:
【中文标题】javascript客户端中的ZeroMQ【英文标题】:ZeroMQ in javascript client 【发布时间】:2011-12-30 00:16:54 【问题描述】:有没有人成功使用ZmqSocket.js?我想知道如何使用它在浏览器和 zeromq 服务器应用程序之间建立安全通道。这种用例还有其他/更好的选择吗?
【问题讨论】:
【参考方案1】:我从未使用过 ZmqSocket.js,但我可以告诉你,这可能不是一个好主意(目前)。这是因为 zmq 仍然假设两个对等方都非常了解协议,并且如果提供无效数据就会崩溃(不过,他们正在努力解决这个问题)。
我现在要做的是有一个简单的基于node.js 的代理,它使用socket.io 与浏览器通信并将数据推送到(并从中读取)一个zeromq 套接字,应用程序的其余部分就在其中。
2013 年更新: 我写了sockjsproxy,它基本上代理了发往/来自sockjs 和 zeromq 的消息,允许您通过实现(非常简单)基于 ZeroMQ 的协议。
我亲自将它与 Python 和 Scala 服务器一起使用来构建实时 Web 应用程序。
【讨论】:
【参考方案2】:我开始寻找一种将网络浏览器用于 UI 的解决方案。
我有一个 Java 应用程序,它从多个来源收集信息,分析它并将结果存储在数据库中,允许其他系统获取信息。
Java 应用程序在 PUSH ZMQ 套接字上提供信息(日志、事件等),并提供一个 REP 套接字来控制它(更改参数、诊断请求等)。
我目前有一个带有使用 Tk 的 UI 的 Python 应用程序,我计划用 Web 界面替换它。
我对 ZMQ javascript 投标的问题是它使用了 ios 不支持的 flash 组件。
在谷歌上搜索了一下,我发现了一个标题为“Interacting With ZeroMQ From the Browser”的帖子,其中使用了NullMQ
我希望这会有所帮助。
【讨论】:
【参考方案3】:另一个观点:实现一个处理所有 ZeroMQ 策略的 WebSocket-to-ZeroMQ 代理似乎需要做很多工作,但您可以很快让部分代理运行。像 Emil 一样,我正在尝试使用 PyZMQ WebSocket 桥;就我而言,我只关心从 SUB 套接字获取消息。
在我的模型中,我从浏览器向代理发送 JSON 消息,请求创建新的 ZMQ 套接字。当这些套接字接收到数据时,它们会通过同一个 WebSocket 连接将数据发送回浏览器。
这是python proxy backend 和我的javascript proxy frontend。在我的 Python 代码中,AsyncReciever
类是对基本上运行 JSON 编码/解码的 ZMQStream
的一个非常薄的包装器。如果您想将原始 ZeroMQ 字节发送到浏览器,事情会更简单:只需将 ZMQSocket.on_message
回调直接连接到 BridgeWebSocket.write_message
。
【讨论】:
以上是关于javascript客户端中的ZeroMQ的主要内容,如果未能解决你的问题,请参考以下文章
没有javascript的浏览器中的独立php jabber客户端
博客文章中的 Gatsby-js 客户端 javascript 内联