【发布时间】:2012-10-16 08:52:06
【问题描述】:
我在 debian 机器上全新安装节点(来自 git)时出现了一个奇怪的行为。 似乎问题不在我的代码中,因为在 Windows 上一切正常。 我已经知道这不是网站图标问题。
这是我写的:
var app = require('express')()
, server = require('http').createServer(app)
, io = require('socket.io').listen(server)
, url = require('url')
, qs = require('querystring')
, request = require('request')
, fs = require('fs')
紧随其后
server.listen(3000);
app.post('/postReload', function (req, res) {
var fullBody = '';
req.on('data', function(chunk) {
fullBody += chunk.toString();
if (fullBody.length > 1e6) {
req.connection.destroy();
}
});
req.on('end', function() {
out = qs.parse(fullBody);
vars = out.vars || '';
if(out.module && out.value){
// do the job
// console.log here is done twice !
}
res.writeHead(200, {'Content-Type': 'text/html'})
res.end();
});
});
另一种写法时:
app.post('/postReload', function (req, res) {
// console.log here is done twice !
}
这个问题影响到每一个浏览器,一周的测试并没有解决任何问题。
这里有人有想法吗?
双重动作发生在 curl 或浏览器访问时。
【问题讨论】:
-
是连续记录两次还是在两分钟内记录两次?
-
同一帖子立即两次。如果在后服务器端生成一个随机数,则相同的数字重复两次
-
这是一个长镜头......但我怀疑您的代码中的某些内容可能会触发额外的请求“结束”事件。您可能希望将代码精简到最低限度(例如,没有正文解析、没有长度验证等),然后离开 console.log() 看看是否是这种情况。