Node.js-这是频繁更新内容的良好结构吗?

问题描述

| 作为我昨天关于Node.js并与客户端通信的问题的跟进,我试图了解以下内容的工作方式。 案件: 所以,我有这个网站,内容经常更新。假设这一次,此内容是带有温度的位置的列表。 (是的,气象服务) 现在,每当客户检查某个位置时,他或她都会转到如下网址:
example.com/location/id
其中
id
对应于我数据库中该位置的ID。 实现方式: 在服务器上,“ 2”循环(每隔一秒左右)遍历我(mySQL)数据库中的所有位置,并检查相应的温度。然后将其存储为
checktemps.js
内的数组。由于温度会随时变化,因此必须继续检查数据库中的更新,这一点很重要。 当请求“ 0”时,“ 2”将查找具有id = id的记录的数组。然后,它以相应的温度响应。 题: 目前,纯文本,html或ajax调用均不相关。我只是好奇我是否有这个权利? Node.js是一件很不寻常的事情,所以我想弄清楚这是否合乎逻辑?     

解决方法

           在服务器上,checktemps.js循环   (每隔一秒钟左右)   我的(mySQL)数据库中的位置   并检查相应的   温度。然后存储此数据   是checktemps.js中的一个数组 这是极其低效的。您不应该进行循环(每隔一秒左右)。 模组 下面,我将尝试列出模块(将node.js模块与其他模块同时列出),以提高效率:   npm是节点的软件包管理器。您可以使用它来安装和发布节点   程式。它管理依赖关系并执行其他很酷的事情。 我衷心希望您已经了解npm,否则我建议您尽快了解。在开始时,您只需要学习如何安装软件包,但这非常容易。您只需要输入
npm install <package-name>
。稍后,我真的很建议您学习编写自己的软件包以为您管理依赖项。   Express是Node.js的高性能,高级Web开发。 TJ的这种sinatra风格的框架确实很不错,您应该阅读可用的文档/截屏视频以了解其功能。   Socket.IO旨在使各种浏览器和   移动设备,模糊了   不同之间的差异   运输机制。   Redis是开源的,高级的   键值存储。它经常被提及   作为数据结构服务器,因为   键可以包含字符串,哈希,   列表,集合和排序集合。 就像Raynos所说的那样,这个非常快速/性感的数据库具有pubsub语义,这是有效解决您的问题所必需的。我认为您应该真正使用此数据库(教程)来欣赏它的原始功能。容易安装:pie7ѭ   Node_redis是用于node.js的完整Redis客户端。它支持所有Redis命令,包括MULTI,WATCH和PUBLISH / SUBSCRIBE。 原型 我只是记得我过去曾帮助另一个用户解决有关pubsub的问题。我认为,当您查看该答案时,将会更好地理解如何正确执行此操作。该代码已经发布了一段时间,应该进行更新(快速更改):
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();
        });
    });
}
我已经压缩了包含所有依赖项的更新代码,但是您仍然需要首先启动Redis。 问题 我希望这能给您一个思路。     ,        使用node.js,您可以做得更好。自网络开始以来,请求/响应的麻烦就体现在我们的脑海中。但是,如果您打开网站/应用程序且从未结束此调用,则只能执行一个ajax请求。现在,只要您有更新到客户端,node.js就可以发送数据。在youtube上搜索
Introduction to Node.js with Ryan Dahl
(node.js的创建者),他在那里进行了解释。这样,您就可以进行实时更新,而不必始终由客户端执行请求。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...