问题 ZeroMQ vs socket.io


我想要ZeroMQ和socket.io之间的主要区别

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

10467
2018-04-06 09:41


起源



答案:


虽然在某些情况下两者可以互换使用,但你要比较苹果和橘子。

Socket.io
是一个javascript库,由两部分组成 - 一个客户端部分,用于在任何支持Web套接字的浏览器中运行,以及一个在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或任何服务器框架无关。

您应该阅读相应文档的前几页:
socket.io
ZeroMQ指南 

简而言之:
ZeroMQ不在浏览器中运行,并且不一定与NodeJS或JavaScript相关联 - 它促进了不同“程序”之间的通信。 Socket.io是用JS编写的,是一个浏览器脚本和一个npm包,用于在NodeJS服务器和客户端之间进行实时通信时使用。


15
2018-04-06 11:02



我唯一要补充的是在许多不同的平台/语言(python,PHP,Java等)中存在socket.io的服务器端实现,所以它不仅可用于node.js - 如果需要,end和socket.io可用于服务器到服务器的通信。也就是说,由于ZMQ不在浏览器中运行,因此它仅用于服务器端通信。 - jfriend00
@jfriend00现在,我甚至不知道其他实现。 - programstinator
既然你知道socket.io有其他实现,那有什么区别? - pjsofts
Socket.IO支持实时双向基于事件的通信。它适用于每个平台,浏览器或设备,同样关注其网站的可靠性和速度。 - pjsofts
@pjsofts:Socket.io构建于WebSocket / HTTP之上。这是一个应用层协议。 0MQ是下面的一层,它只是TCP / UDP /等之上的抽象,因此在这方面它与标准POSIX套接字更具可比性。原则上,这为0MQ提供了更好的控制和速度。 OTOH,因为Socket.io使用HTTP,它将工作,例如在浏览器开箱即用。 - Marek


答案:


虽然在某些情况下两者可以互换使用,但你要比较苹果和橘子。

Socket.io
是一个javascript库,由两部分组成 - 一个客户端部分,用于在任何支持Web套接字的浏览器中运行,以及一个在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或任何服务器框架无关。

您应该阅读相应文档的前几页:
socket.io
ZeroMQ指南 

简而言之:
ZeroMQ不在浏览器中运行,并且不一定与NodeJS或JavaScript相关联 - 它促进了不同“程序”之间的通信。 Socket.io是用JS编写的,是一个浏览器脚本和一个npm包,用于在NodeJS服务器和客户端之间进行实时通信时使用。


15
2018-04-06 11:02



我唯一要补充的是在许多不同的平台/语言(python,PHP,Java等)中存在socket.io的服务器端实现,所以它不仅可用于node.js - 如果需要,end和socket.io可用于服务器到服务器的通信。也就是说,由于ZMQ不在浏览器中运行,因此它仅用于服务器端通信。 - jfriend00
@jfriend00现在,我甚至不知道其他实现。 - programstinator
既然你知道socket.io有其他实现,那有什么区别? - pjsofts
Socket.IO支持实时双向基于事件的通信。它适用于每个平台,浏览器或设备,同样关注其网站的可靠性和速度。 - pjsofts
@pjsofts:Socket.io构建于WebSocket / HTTP之上。这是一个应用层协议。 0MQ是下面的一层,它只是TCP / UDP /等之上的抽象,因此在这方面它与标准POSIX套接字更具可比性。原则上,这为0MQ提供了更好的控制和速度。 OTOH,因为Socket.io使用HTTP,它将工作,例如在浏览器开箱即用。 - Marek