ZeroMQ与socket.io的比较

15

我希望了解ZeroMQ和socket.io之间的主要区别

  1. 性能. (速度更快吗?可扩展吗?)
  2. 应用. (它是否用于实时服务?)
  3. 浏览器支持. (支持哪些浏览器?)
1个回答

24
虽然有些情况下两者可以互换使用,但你现在正在比较苹果和橙子。
Socket.io是一个JavaScript库,由两部分组成-客户端部分用于任何支持Web Sockets的浏览器,以及运行在NodeJS上的服务器端部分。它被用来构建实时Web应用程序,意味着你期望在客户端和服务器之间进行大量的来回通信(可能涉及多个客户端,例如聊天)。
ZeroMQ是一个网络库,用于构建分布式应用程序。它旨在运行于后端。其想法是使不同线程或进程之间的通信成为可能,无论是在单台计算机上还是在分布式网络上(这意味着它为不同目的使用不同的传输方式,并且可以无缝地进行转换)。它有很多流行编程语言的用法示例(PHP、Python、C++、C#、CL、Delphi、Erlang、F#、Felix、Haskell、Java、Objective-C、Ruby、Ada、Basic、Clojure、Go、Haxe、Node.js、ooc、Perl 和Scala),因此它没有与NodeJS或任何服务器框架捆绑在一起的限制。
You should read the first couple of pages of the respective docs:
socket.io
ZeroMQ guide In short:
ZeroMQ不在浏览器内运行,也不一定与NodeJS或JavaScript绑定-它促进了不同“程序”之间的通信。Socket.io是用JS编写的,是浏览器脚本和npm包,用于在NodeJS服务器和客户端之间实现实时通信。

10
我会尽力为您翻译。需要翻译的内容是:“我想补充一点,socket.io 的服务端实现在许多不同的平台/语言中都存在(如 Python、PHP、Java 等等),因此它不仅适用于 Node.js 后端,如果需要,也可以将 socket.io 用于服务器之间的通信。话虽如此,由于 ZMQ 无法在浏览器中运行,因此只能用于服务器端通信。” - jfriend00
Socket.IO 可以实现双向实时事件通信。它适用于任何平台、浏览器或设备,并且同样注重可靠性和速度。 - pjsofts
6
Socket.io是建立在WebSocket/HTTP之上的应用层协议。0MQ位于更底层,仅是TCP/UDP等协议的抽象层,因此在这方面与标准的POSIX套接字更具可比性。原则上,使用0MQ可以更好地控制和提高速度。但是,由于Socket.io使用HTTP,它将直接在浏览器中工作。 - Marek
1
@Goran_Mandic 但是你仍然可以使用ZMQ来创建自己的JavaScript/jQuery聊天应用程序吗?(问这个问题是因为想选择一个与PHP和jQuery一起使用的工具来实现这个目的) - kiradotee
1
我还想指出的是,socket.io实际上并不需要Web套接字,并且具有多个备用传输方式,这些方式也可以无缝地工作。 - Patrick Roberts
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接