gpt4 book ai didi

node.js - 如何在实时 gps 跟踪应用程序中使用 node.js?

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:13 25 4
gpt4 key购买 nike

我正在尝试了解 node.js 如何适合我的场景。

目前,移动设备通过 POST 将 GPS 坐标发送到 Rails 后端。移动设备每分钟发送一次。

POST http://127.0.0.1:3000/location/

我的 RubyOnRails 网络应用程序可以在 map 上显示位置的历史记录,这没问题。

但我在 nodejs 方面的经验仍处于初级阶段,我想了解如何显示实时 GPS 更新的 map 。

最佳答案

使用Socket.IO .

大多数教程都展示了某种聊天应用程序。在您的情况下,通信只是单向的。并且您的设备未通过 WebSockets 连接,而只是在没有 channel 返回的情况下发布新坐标(设备不订阅来自服务器的事件)。

您的网页(显示 Google map 控件)通过 socket.io 连接到您的 Node.js 服务器,并获取从您的服务器推送的新坐标 (socket.emit)。您必须以某种方式记住来自设备的哪些“新坐标”事件必须发布到哪些监听网络客户端。

当然,如果您不仅要显示设备的新坐标,您还需要为您的网页提供最近坐标的初始列表。您也可以通过套接字传送它们,但由于您需要某种身份验证,因此 REST 调用对于第一批设备 GPS 跟踪可能更清晰。

因此,当设备更新其位置时,您只需为该设备找到连接的监听器并 emit("new-coordinate", {lat: ..., lng: ..., deviceId: .. . 事件到 map 。在网页中,您接收事件并像这样处理它们:

<script src="/socket.io/socket.io.js" type="text/javascript"></script>
<script type="text/javascript">

$(function () {

if (typeof io === 'undefined') {
return; // socket.io not loaded
}
var socket = io.connect();
socket.on('new-coordinate', function (data) {
console.log('arrived', data);

$(document).trigger('new-coordinate', data);

// or just directly update your map ...

});

});

</script>

编辑

由于您的网页和新坐标 POST 是通过 RoR 传送的,因此您必须触发从 Ruby 到 node.js 服务器端的事件。基本上你可以通过 REST 从 Ruby 调用你的 node.js 应用程序,但还有其他选项,如 Redis pub/sub 或 dnode ruby .

(评论)我会将 RoR 应用程序迁移到 node.js ;-)(/评论)

关于node.js - 如何在实时 gps 跟踪应用程序中使用 node.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20012977/

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