我将构建一个 Web 应用程序,它将接受来自外部源的不同事件并将它们快速呈现给用户以进行进一步操作。我想在 Web 应用程序中使用 Ruby on Rails。本项目为内部开发项目。我更喜欢简单易用的快速开发解决方案,而不是高度可靠和复杂的系统。
它应该做什么
用户在其浏览器中打开了 Web 应用程序。现在一个电话来了。电话呼叫由 PBX 监控守护程序注册。在这种情况下,通过 Asterisk Manager 界面。守护进程以某种方式将可用信息(远程分机、本地分机、呼叫方向、频道状态、开始时间、结束时间)发送到 Web 应用程序。接下来,用户会收到有关电话呼叫事件的通知。用户现在可以使用它。例如,通过输入摘要或将呼叫与客户资料相匹配。
从 PBX 上的第一个事件(例如创建新频道)到浏览器中弹出通知的持续时间应该很短。给定一个快速的网络,我希望在两秒钟内。有关事件的单条信息是异步创建的。本地分机可以与远程分机分开提供。用户可以在通话结束之前输入摘要。结束时间、新状态等会在一方挂断后立即显示在界面上。
PBX 监视器只是一种数据源。将有更多的监视器,如电子邮件或通过网络表单提出的请求。监控守护程序不一定与数据库或 Web 服务器在同一主机上运行。我不认为该应用程序将很快为成千上万的登录用户或并发请求提供服务。但从设计来看,每分钟事件数量可能大致相同的 200 个用户不应该是可扩展性问题。
我应该怎么做?
我很想知道您将如何设计这样的应用程序。你会建议什么技术?守护进程如何传递它们的信息?有关事件的数据何时以及由谁存储到主数据库中?用户如何得到通知?浏览器应该代表一个守护进程接收一个完整的数据集,还是只是一个简短的说明新数据可用?使用哪个 JS 库以及如何在服务器端创建必要的代码?
在我的研究中,我遇到了很多可能性:消息代理、队列服务、一些 Rails 后台任务解决方案、HTTP 推送服务、XMPP 等等。我要研究的一些产品:ActiveMQ、Starling 和 Workling、Juggernaut 和 Bosh。
也许我的目标太高了?如果有更简单或更简单的方法,比如只使用 Rails 的 XML 或 JSON 接口,我想阅读更多。
我希望文字不要太长:)
谢谢。