我正在做实时网络应用程序开发。

浏览器用户应该能够通过 node.js 服务器相互通信。其中一个用户写了一条消息,所有其他用户都会收到它。

我不太明白 RabbitMQ 是如何工作的。但是从快速阅读来看,它似乎处理消息的发布/订阅。

用户(在浏览器中)发布某些内容,而订阅者(在其他浏览器中)会收到该消息。这不是 Socket.io 对 websockets 所做的事情吗?

以下是我的问题:

  • 它们各自的优缺点是什么?
  • Socket.io可以代替RabbitMQ吗?
  • 有没有我需要 RabbitMQ 来处理 Socket.io 不够用的 Web 应用程序的场景?
  • 最佳答案

    更新



    当你只有这些简单的需求时,socket.io 就足够了。 。当您希望以受控方式离线处理作业(繁重)时,您只需要一条消息 queue

    http://en.wikipedia.org/wiki/Message_queue:



    这句话需要下沉。生产者(一个进程)将一个作业放入队列,消费者通过从队列中取出作业进行消费。大多数情况下,消费者是多个进程同时消费多个作业。消费者无法相互分辨,他们正在消费什么工作。



    我认为这是队列的一个重要属性。先进先出属性虽然使用像 beanstalkd 这样的高级消息队列,但您可以指定作业优先级。

    我希望这有任何意义;)



    你能不能解释得好一点,以便我们给你一个更好的答案?



    请参阅下面有关消息队列的引用。让它沉入一段时间。您还可以阅读有关 message queues 的 WIKI。



    Socket.io 支持许多不同的传输(也包括 websockets),因为大多数浏览器不支持 websockets。但例如谷歌浏览器已经支持 websockets。我相信 websockets 是 future 的交通工具(但还不是!)。当您查看 Socket.io's browser support page 时,您会注意到 Socket.io 确实支持所有主要浏览器(有些甚至是古老的)。好消息是它围绕一个很好的 API 进行了包装。



    你在比较苹果和橘子,所以比较有点奇怪。

    兔MQ

    http://www.rabbitmq.com/tutorials/tutorial-one-python.html:



    优点

  • 这是一个不错的 消息队列 。我个人会使用 redisbeanstalkd

  • 缺点:
  • 不是真正的“浏览器”。


  • Socket.io

    http://socket.io/:



    优点
  • 用于浏览器

  • 缺点
  • 不是消息队列。



  • 不,你不能,因为它们是两个完全不同的东西。您正在将苹果与橙子进行比较。您应该尝试从我引用的网站中理解这两种描述。

    关于node.js - RabbitMQ 与 Socket.io?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6636213/

    10-16 18:03