gpt4 book ai didi

javascript - Node.js - 对于经常更新的内容来说,这是一个很好的结构吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:13 25 4
gpt4 key购买 nike

作为 my question yesterday 的后续行动关于 Node.js 和与客户的沟通,我试图了解以下内容的工作原理。


案例:

所以,我有这个内容更新非常频繁的网站。假设这一次,此内容是一个具有温度的位置列表。 (是的,天气服务)

现在,每次客户检查某个位置时,他或她都会转到这样的 url:example.com/location/id 其中 id 对应于我数据库中位置的 id。


实现:

在服务器上,checktemps.js 循环(每隔一秒左右)遍历我的 (mySQL) 数据库中的所有位置并检查相应的温度。 然后它将此数据存储为 checktemps.js 中的一个数组。由于温度随时都在变化,因此不断检查数据库中的更新非常重要。

当发出对 example.com/location/id 的请求时,checktemps.js 会在数组中查找带有 < em>id = id。然后,它响应相应的温度。


问题:

纯文本、html 或 ajax 调用目前不相关。 我只是想知道我是否做对了?Node.js 是一个很难掌握的东西,所以我试着弄清楚这是否合乎逻辑?

最佳答案

At the server, checktemps.js loops (every other second or so) through all the locations in my (mySQL) database and checks for the corresponding temperature. It then stores this data is an array within checktemps.js

这是非常低效的。你不应该循环(每隔一秒左右)。

模块

下面我将尝试制作一个模块列表(包括 node.js 模块和其他模块),我将使用它来高效地执行此操作:

  • npm is a package manager for node. You can use it to install and publish your node programs. It manages dependencies and does other cool stuff.

    我真诚地希望您已经了解 npm,如果还没有,我建议您尽快了解它。一开始你只需要学习如何安装包,但这很容易。您只需要输入 npm install <package-name> .以后我真的很想建议你学习编写自己的包来为你管理依赖项。

  • Express is a High performance, high class web development for Node.js.

    这个来自 TJ 的 sinatra 风格的框架非常棒,您应该阅读可用的文档/截屏视频以了解它的强大功能。

    Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms.

  • Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

    正如 Raynos 所说,这个极其快速/性感的数据库有 pubsub语义,这是有效解决问题所必需的。我认为您真的应该使用这个数据库 ( tutorial ) 来欣赏它的原始功能。安装非常简单:make install

  • Node_redis is a complete Redis client for node.js. It supports all Redis commands, including MULTI, WATCH, and PUBLISH/SUBSCRIBE.

原型(prototype)

我只记得我过去曾帮助另一个用户解决关于 pubsub 的问题.我认为当您查看该答案时,您将更好地理解如何正确地做到这一点。代码已经发布了一段时间,应该更新(express 中的微小变化)到:

var     PORT        = 3000,
HOST = 'localhost',
express = require('express'),
io = require('socket.io'),
redis = require('redis'),
app = module.exports = express.createServer(),
socket = null;

app.use(express.static(__dirname + '/public'));

if (!module.parent) {
app.listen(PORT, HOST);
console.log("Express server listening on port %d", app.address().port)
socket = io.listen(app);

socket.on('connection', function(client) {
var subscribe = redis.createClient();
subscribe.subscribe('pubsub'); // listen to messages from channel pubsub

subscribe.on("message", function(channel, message) {
client.send(message);
});

client.on('message', function(msg) {
});

client.on('disconnect', function() {
subscribe.quit();
});
});
}

我有compressed更新后的代码包含所有依赖项,但您仍然需要先启动 Redis。

问题

我希望这能让您知道如何执行此操作。

关于javascript - Node.js - 对于经常更新的内容来说,这是一个很好的结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6395903/

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