为什么我在Node的HTTP服务器上有这么多连接事件?

我有一个使用socket.io的Web应用程序。 它在本地机器上运行localhost:8000。 为了在我的应用程序中find令人讨厌的资源泄漏,我尝试在我的HTTP服务器上注销连接事件:

server.on('connection', function(conn) { //log out connection details }); 

在页面加载后,当我在浏览器中打开页面时,可以在日志中看到多个连接事件 – 如下所示:

 connection established: 127.0.0.1:54148 connection established: 127.0.0.1:54149 connection established: 127.0.0.1:54146 connection established: 127.0.0.1:54152 connection established: 127.0.0.1:54144 connection established: 127.0.0.1:54155 

奇怪的是,我没有创build一个WebSocket连接后,页面加载 – 只有当用户点击一个button。 但是我没有点击任何button,我仍然看到这些奇怪的联系。

如果我点击我的button来连接到我的服务器socket.io日志显示一个新的连接:

 connection established: 127.0.0.1:54155 

幸运的是,我在日志中看到的每个连接都在一段时间后closures – 所以我猜这不能成为我资源泄露的原因。

但我仍然好奇:是什么原因导致这些连接事件? 为什么端口号这么奇怪(不是我的服务器监听的8000)?

编辑:

我的服务器configuration不是一个特殊的。 在server.js

 var express = require('express'); var app = express(); var server = require('http').Server(app); var io = require('socket.io')(server); var configSettings = require('./configSettings'); var socketIOServer = require('./server/socketServer')(io); // config socketServer require('./server/static.js')(app, express); // static middleware require('./server/routes.js')(app, configSettings); // routes exports = module.exports = server; exports.use = function() { app.use.apply(app, arguments); }; exports.configSettings = configSettings; 

start.js

 var server = require('./server'); var port = server.configSettings.serverPort; var serverIpAddress = server.configSettings.serverIpAddress; server.listen(port, serverIpAddress); 

从HTTP服务器login的连接是可以预料的,并且与你的HTML页面(JS,CSS,图像,图标等)上正在使用的资源相关。

您logging的端口号是客户端端口号。 虽然不是随机的,但是它们会随着每个build立到服务器的新连接而改变。 在资源被传送到客户端之后(并且依赖于保持活动,一些额外的时间),连接将被closures。

通常,Node可以处理数千个并发连接。

这显然不能解决你的资源泄漏,但它解释了你所看到的连接事件。