gpt4 book ai didi

javascript - Chrome 浏览器显示 NodeJS 代码计数错误

转载 作者:行者123 更新时间:2023-12-03 06:34:48 24 4
gpt4 key购买 nike

我写了一些nodejs代码。在执行过程中,我注意到第一次访问的 chrome 浏览器显示的计数值为 1,之后的访问显示为 3、5、9 等。 Internet Explorer 浏览器工作正常,我的意思是,它显示 1、2、3 等。我不明白其中的原因。我写的代码附在下面。我的代码哪里有错误?

感谢您的帮助。

var http = require('http');
var socket = require('socket.io')();
var port = process.env.port || 1337;
var count = 0;
var x = 0;
socket.on('connection', function (client) {
count++;
console.log("soc con");
client.broadcast({ count: count })
client.on('disconnect', function () {
count--;
console.log("soc dis");
});
console.log(count);
})

http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
count++;
var c = count.toString();
res.end(c);
}).listen(port);

最佳答案

当浏览器连接到网页时,他们通常会请求您请求的页面,并且会请求该页面的图标(称为网站图标)。这是对同一服务器的两个请求。如果添加:

console.log(req.url);

对于您的服务器处理程序,您将看到每个浏览器页面收到两个请求,一个请求页面的 URL,另一个请求请求页面图标(通常称为网站图标)。如果你想忽略页面图标请求,你可以添加一个像这样的 if block if (req.url === "/") { code here} 来避免任何其他 URL 请求,并且仅增加特定页面的计数器。

请求页面图标的具体方式取决于浏览器,因此在这种情况下 IE 的行为肯定可能与 Chrome 不同。

将您的服务器更改为:

http.createServer(function (req, res) {
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'text/plain' });
count++;
res.end(count);
} else {
res.statusCode = 404;
res.end();
}
}).listen(port);
<小时/>

仅供引用,您可以替换此:

var c = count.toString();
res.end(c);

这样:

res.end(count);

在 Javascript 中,字符串转换会自动发生。

关于javascript - Chrome 浏览器显示 NodeJS 代码计数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277030/

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