如何将带有位置的数据实时发送到服务器?我做对了吗?

How send data with location to a server in real time? Did i do it right?

我需要制作一个系统,android 应用程序会将用户的位置实时发送到服务器。然后在网站上(在同一台服务器上),您将能够看到用户(使用应用程序)如何旅行。就像你可以从 uber eats 关注食品供应商一样。

项目目前已经制作完成,效果很好,但我不确定我是否做对了?

现在 android 应用程序每 1 秒读取一次用户位置,并使用 POST 方法将其发送到服务器。例如:mydomain.com/gps.php?usertoken=XXX&latitude=XXX&longitude=XXX。 php 文件每次获取此数据时,都会将其保存在 MySQL 数据库中。就这些了。

现在访问该网站的用户可以在地图上看到用户使用应用程序的位置(来自数据库的位置)。

这是正确的解决方案吗?我不应该使用任何其他方法吗?未来可能有几十个用户,这样的系统效率高吗?我恳请一些建议。我是初级程序员。

gps.php 文件中 android 应用程序的代码:

$lat = $_POST['latitude'];
$long = $_POST['longitude'];
$login = $_POST['usertoken'];

//save location to database
$db = mysqli_connect('localhost', 'xxxx', 'xxxx', 'xxxx');
$db->query("UPDATE users SET latitude='$lat', longitude='$long' WHERE login='$login'");
$db->close();

WebSockets 可能是适合您的解决方案。它们允许您在服务器和客户端之间建立双向连接。非常适合具有大量 "traffic" 的应用程序 由于它会产生较小的开销。将数据从服务器推送到客户端的能力对于您的应用程序来说也非常巧妙,因为它允许您随时更新客户端 服务器上发生了一些事情。

https://socket.io/ 是一个非常简洁的客户端和服务器库。对于 MySQL 部分,您可以使用 node.js 及其 mysql 包

https://nodejs.org/en/

https://www.npmjs.com/package/mysql

我想,你休息api(http)网络调用没有错。在大多数情况下这是一个正确的解决方案。

但我认为您需要在 php 代理服务器中保持数据库连接。

因为服务器一直在运行。

并且在每次查询中重新连接到数据库是一项昂贵的工作。