【发布时间】:2017-07-15 08:41:57
【问题描述】:
我有以下socket.io 的后端。每次我们在新的浏览器选项卡中通过localhost:3000 打开连接时,都会在服务器的文件夹tmp/ 中创建一个以套接字ID 命名的文件。
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
server.listen(3000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function(socket) {
var fs = require('fs');
fs.writeFile("tmp/" + socket.id, "hello", function (err) {
if (err) { return console.log(err) };
console.log('a file is saved!');
});
});
因为套接字稍后可能会断开连接、处于非活动状态或空闲状态。我想在服务器中设置一个简单的清理规则。比如在4pm的每天,我想删除昨天4pm之前保存的所有文件。
那么有谁知道如何设置这种每天定期检查+删除?
编辑 1: 在与 @georoot 讨论之后,我意识到我需要向刚刚删除 tmp 文件的连接发送通知消息。而且我希望所有 network 代码都包含在网站 nodejs 代码中(尽管 nodejs 代码可能会调用外部 bash)。
【问题讨论】:
-
cron job你试过了吗? -
我明白了...所以你是说我不必在我的网站 javascript 代码中实现这个?我可以在我的服务器上单独安排一个作业吗?
-
正是..它与
fs有关,不需要任何nodejs。让我写一个简单的 bash 脚本来帮助你:) -
但是等等,在网站上实现这个还是有好处的。因为我可能想向刚刚删除 tmp 文件的(例如空闲)连接发送消息。
-
你也可以在 bash 中做到这一点。你在 linux 中看到一切都是文件,你在 bash 中它会类似于
echo "message" > /tmp/socketid假设我正确遵循并且 /tmp/socketid 已创建但 socketio 库....如果不是这样,您可以编写一个节点脚本并在删除文件之前调用它以将消息发送到连接
标签: node.js sockets socket.io timeout filesystems