java - 在车队管理应用程序中使用 node.js

标签 java javascript node.js asynchronous socket.io

我有一个 gps 车队管理应用程序,我认为使用 node.js 会大大受益。我刚开始研究 node.js,仍然认为我还有很多东西要学,但希望能得到您的建议和指导。

让您了解我们当前的设置:

A java app receives, compiles, and parses gps records into mySql db. The users than, though our application, query the database every 6 sec for the last record for a particular gps unit. During the day there are about 9 million records that are inserted into the database.

所以我想做的是在我们的 java 应用程序中使用并包含 node.js,并利用它向客户端浏览器发送 gps 数据,而无需将其查询到数据库中。换句话说,我正在考虑做一个小功能来检查 gps id(总共大约 5000 个 id)并与客户端 id(总共 200 个)进行比较,并根据该功能将其发送到所需的 node.js channel 。

假设我对 node.js 的经验不多,如果你能告诉我我的逻辑是否合理并且 node.js 是正确的方法,我将不胜感激?

谢谢,

最佳答案

如果您已经在使用 Java 为什么不使用像 CometD ( http://cometd.org/ ) 这样的东西,它具有与 Socket.io 相同(或相似)的推送功能,并且它已经基于 Java。如果您使用的是 Jetty 以外的 Java 容器,Atmosphere ( https://github.com/Atmosphere/atmosphere) 是另一个不错的选择,它支持很多容器。

总的来说,我认为您的设计对于“实时”来说有点缺陷。当您获得更新时,如果他们已连接并且对信息有有效的“订阅”,您应该直接将它们推送给客户。您仍然可以更新数据库,但为什么数据库是“推送”模型中此信息的中央交换所?在并行更新数据库时直接推送到某种 websocket 样式的解决方案会更有意义。然后唯一查询数据库的人是登录新 session 以获取“最后历史点”的用户,并且无需任何数据库查询即可推送所有后续更新。

有人有什么想法吗?

关于java - 在车队管理应用程序中使用 node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568422/

相关文章:

javascript - 如何在 tinymce 编辑器中启用字体系列和颜色选项?

node.js - 如何使用 xero-node 库更新多个联系人

javascript - Node.JS 不间断的语法错误

java - 为什么setBackground会覆盖其他绘图?

java - Intellij IDEA 无法识别 java 文件 : blue square in directory

javascript - 如何在ejs标签中插入javascript变量

javascript - Angular 不会在 HTML 中显示我的数组结果

java - 我在使用抛硬币程序时遇到一些问题

java - 用于软件指标的 Eclipse 插件 - 工作区级别摘要

javascript - 如何在 Firefox 上使用 Java WebDriver 中的 js 变量