我需要向我的Rails应用添加实时通知。以下是我发现的不同架构。
问题:
答案 0 :(得分:4)
看一下eventmachine和websockets。还有第三方服务,如Pusher和PubNub,它们将通过HTTP API为您处理websocket部分。
https://github.com/igrigorik/em-websocket
Rails 5也将添加ActionCable,它将在rails中执行此操作,但它还没有出来。
我想说这些方法的优点是你不需要一个单独的node.js应用程序。这些服务非常易于使用,但不是免费的。
答案 1 :(得分:0)
看看Plezi(这是我自己的宠物项目,所以我可能有偏见)。
虽然它也可以作为一个独立的框架使用,但它很容易设置为Rails附加组件或用Redis替换socket.io。
如果您将服务器切换到Plezi的首选服务器(只需删除对其他服务器的引用),您可以编写一个Plezi websocket控制器并在同一进程(同一个ip:端口)上与您的Rails应用程序一起运行来自你的gemfile)。
另一种方法是将Plezi作为一个独立的进程运行(在不同的端口上)并使用Redis同步它们(使用Plezi的安慰剂API)。
Plezi的文档中有一节标题为:" Using Plezi with our existing Rack application"
Pro :使用原生websocket实现(服务器端websockets)和快速C扩展服务器(Iodine)。可以与您的Rails应用程序完全集成(在同一域/进程/ ip /端口上同时提供websockets和HTTP);轻松扩展(自动redis支持)。
Con :年轻;需要C扩展支持(Ruby MRI)和Linux / BSD / OS X机器(无窗口);共享代码需要是线程安全的(websockets可能与HTTP或其他连接并行运行)。
祝你好运!