作为my question yesterday关于Node.js和与客户沟通的后续行动,我试图了解以下内容如何发挥作用。
所以,我有这个网站内容经常更新。我们假设这次,这个内容是一个温度的位置列表。 (是的,天气服务)
现在,每次客户检查某个位置时,他或她都会转到这样的网址: example.com/location/id
其中 id
对应于我数据库中位置的ID。
在服务器上, checktemps.js
循环(每隔一秒左右)遍历my(mySQL)数据库中的所有位置并检查相应的温度。 然后将此数据存储在checktemps.js
内的数组。由于温度可能一直在变化,因此继续检查数据库中的更新非常重要。
当发出对 example.com/location/id
的请求时,checktemps.js
会查看包含 id = id 的记录的数组。然后,它响应相应的温度。
纯文本,html或ajax调用目前无关紧要。 我只是好奇我是否有这个权利? Node.js是一个相当不寻常的事情,所以我试着找出这是否合乎逻辑?
答案 0 :(得分:2)
在服务器上,checktemps.js循环 (每隔一秒左右)通过所有 我的(mySQL)数据库中的位置 并检查相应的 温度。然后它存储这些数据 是checktemps.js中的一个数组
效率极低。你不应该做循环(每隔一秒左右)。
下面我会尝试制作一个模块列表(node.js模块和其他模块一样),我会用它来提高效率:
npm是节点的包管理器。您可以使用它来安装和发布节点 程式。它管理依赖关系并做其他很酷的事情。
我真诚地希望您已经了解npm,如果不是,我建议您尽快了解它。一开始你只需要学习如何安装软件包,但这很容易。您只需输入npm install <package-name>
即可。后来我真的建议你学习编写自己的软件包来管理依赖项。
Express是Node.js的高性能,高级Web开发。
来自TJ的这个sinatra风格的框架非常甜蜜,你应该阅读可用的文档/截屏,以了解它的力量。
Socket.IO旨在让每个浏览器都可以使用实时应用 移动设备,模糊了 不同之间的差异 运输机制。
Redis是一个开源的,先进的 键值存储。它经常被提及 从那以后作为数据结构服务器 键可以包含字符串,哈希, 列表,集合和排序集。
与Raynos一样,这个极速/性感的数据库具有pubsub语义,这些都是高效处理问题所必需的。我认为你应该真正使用这个数据库(tutorial)来欣赏它的原始力量。安装很简单:make install
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();
});
});
}
我有compressed更新的代码,其中包含所有依赖项,但您仍然需要先启动redis。
我希望这会让你知道如何做到这一点。
答案 1 :(得分:0)
使用node.js你可以做得更好。自Web开始以来,请求/响应就体现在我们的头脑中。但是,如果您打开网站/应用程序并且从不结束此调用,则只能执行一个ajax请求。现在,只要有客户端更新,node.js就可以发送数据。在youtube上搜索Introduction to Node.js with Ryan Dahl
(node.js的创建者),他解释了这一点。然后,您可以实时更新,而无需始终由客户端提出请求。