gpt4 book ai didi

ruby-on-rails - 具有外部输入和实时通知的 Web 应用程序的想法

转载 作者:行者123 更新时间:2023-12-04 06:17:32 25 4
gpt4 key购买 nike

我要构建一个 Web 应用程序,它将接受来自外部源的不同事件,并将它们快速呈现给用户以供进一步操作。我想将 Ruby on Rails 用于 Web 应用程序。这个项目是一个内部开发项目。与高度可靠和复杂的系统相比,我更喜欢简单易用的快速开发解决方案。

它应该做什么

用户在他的浏览器中打开了网络应用程序。现在一个电话来了。电话调用由 PBX 监控守护程序注册。在这种情况下,通过 Asterisk Manager Interface。守护进程以某种方式将可用信息(远程分机、本地分机、调用方向、 channel 状态、开始时间、结束时间)发送到 Web 应用程序。接下来,用户会收到有关电话调用事件的通知。用户现在可以使用它。例如,通过输入摘要或将调用与客户资料相匹配。

从 PBX 上的第一个事件(例如创建新 channel )到浏览器中弹出通知的持续时间应该很短。给定一个快速的网络,我想在两秒钟内。有关事件的单条信息是异步创建的。本地分机可以与远程分机分开提供。用户可以在通话结束前输入摘要。一方挂断后,界面会立即显示结束时间、新状态等信息。

PBX 监视器只是一个数据源。将会有更多的监控器,例如电子邮件或通过 Web 表单提出的请求。监视守护进程不一定与数据库或 Web 服务器在同一主机上运行。我不认为该应用程序很快就会为成千上万的登录用户或并发请求提供服务。但是从设计来看,每分钟可能有大约相同数量事件的 200 个用户不应该是可扩展性问题。

我该怎么办?

我很想知道您将如何设计这样的应用程序。您会推荐哪些技术?守护进程如何传递它们的信息?有关事件的数据何时以及由谁存储到主数据库中?用户如何得到通知?浏览器应该代表守护进程接收完整的数据集,还是只接收一个新数据可用的简短提示?使用哪个 JS 库以及如何在服务器端创建必要的代码?

在我的研究中,我遇到了很多可能性:消息代理、队列服务、一些 Rails 后台任务解决方案、HTTP 推送服务、XMPP 等等。我将研究的一些产品:ActiveMQ、Starling 和 Workling、Juggernaut 和 Bosh。

也许我的目标太高了?如果有更简单或更容易的方法,比如只使用 Rails 的 XML 或 JSON 接口(interface),我更愿意阅读这篇文章。

希望文字不要太长:)

谢谢。

最佳答案

如果您想跳过 Java 和 Flash,也许使用 Comet 家族中的一项技术来执行从服务器到浏览器的推送是有意义的?

http://en.wikipedia.org/wiki/Comet_%28programming%29

为了简单起见,对于从守护进程到 Web 浏览器的通知,我将 Rails 留在中间,为该 Rails 应用程序创建一个 RESTful 接口(interface),并让所有守护进程向它报告。然后在你的守护进程中,你可以做一些简单的事情,比如使用 curl 或 libcurl 来发布通知。然后,Rails 应用程序将负责收集来自各种来源的传入通知并将它们报告给浏览器,或者通过使用 Comet 解决方案的 JavaScript,或者通过使用 Flash 或 Java 实现的某种更胖的客户端。

关于ruby-on-rails - 具有外部输入和实时通知的 Web 应用程序的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1134551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com