【问题标题】:What would be the correct way to access and modify a server-side highscore file?访问和修改服务器端高分文件的正确方法是什么?
【发布时间】:2020-08-05 02:17:12
【问题描述】:

我正在为我的 Raspberry PI Web 服务器制作一个 JavaScript 游戏作为学校项目。 我将高分图表作为 JSON 文件。我正在使用 getJSON 调用将其更新到客户端,该调用有效。 当达到新的高分时,我应该如何做写作部分?我正在学习 nodejs、ajax 和 websockets,但在查找信息时遇到了问题。

我想了解如何安全地执行此类操作,而无需在 PI 中打开太多权限。

【问题讨论】:

  • 如果你有一个节点服务器正在运行,你需要做的就是使用fetch/$.post发送一个新的高分,然后让你的节点后端读取、解析、更新和保存文件.除了节点能够读取和写入文件之外,不需要任何权限。
  • 不相关,但我不会将其保存在文件中。只需将文件放在某处,为运行 Web 应用程序的用户设置权限,并使用普通的 NodeJS 文件 IO。
  • 我如何给节点脚本它自己的权限?
  • 将所有分数存储在一个数组中,并使用最适合您正在做的事情的排序算法。谷歌,“排序算法,从高到低,javascript”,你会得到比你需要的更多的信息,我使用冒泡排序。不知道它是否是最好的,我只知道它在很多情况下对我来说都很好。

标签: javascript node.js ajax raspberry-pi


【解决方案1】:

您可以将当前分数保存在对象服务器端。

每次您的客户端将更新后的分数发送回服务器时,您都可以更新此内存中的分数对象,然后将其写入文件以保持它。

这是一个将当前分数保存到文件然后重新加载该文件的示例:

var fs = require('fs');

var currentScores = [
    {initials: 'JDH', score: 10000},
    {initials: 'HMH', score: 9000},
    {initials: 'DDE', score: 7000}
];

const ScoresFile = './scores.json';



function SaveScores(scores) {
    var jsonData = JSON.stringify(scores);

    fs.writeFileSync(ScoresFile, jsonData);
}


function LoadScores() {
    var jsonData = fs.readFileSync(ScoresFile);
    var loadedScores = JSON.parse(jsonData);

    return loadedScores;
}

SaveScores(currentScores);
var a = LoadScores();
console.log(a);

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 2014-06-14
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    相关资源
    最近更新 更多