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

时间:2012-11-26 15:56:36

标签: java javascript node.js asynchronous socket.io

我有一个gps车队管理应用程序,我认为使用node.js会大大受益。我刚开始研究node.js,但仍然认为我有很多需要学习的内容,但我将非常感谢您的建议和指导。

为您提供有关我们当前设置的信息:

  

Java应用程序接收,编译和解析gps记录到mySql数据库中。   除了我们的应用程序之外,用户每隔6秒查询数据库以获取特定gps单元的最后一条记录。在白天,大约有900万条记录被插入到数据库中。

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

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

谢谢,

1 个答案:

答案 0 :(得分:0)

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

一般来说,我认为你的设计对于“实时”来说有点瑕疵。当您获得更新时,如果他们已连接并且对该信息具有有效的“订阅”,则应直接将其推送给客户。您仍然可以更新数据库,但为什么数据库是“推送”模型中此信息的中央清算中心?在并行更新数据库时直接推送到某种websocket样式解决方案会更有意义。然后,查询数据库的唯一人就是登录新会话以获取“最后一个历史点”的用户,并且在不需要任何数据库查询的情况下推送所有后续更新。

有人有什么想法吗?