太多EIO socket.io轮询调用会减慢网页

时间:2017-04-07 13:59:05

标签: node.js socket.io

我的应用程序基于Socket.io进行聊天功能。

我的应用程序部署在红帽开放班次上。

我不断收到数量巨大的http://url/socket.io/?EIO=3&transport=polling&t=Lj8huKr&sid=y1OB9OBmdSd_Ma4nAAFG次请求。

他们可能也阻止加载我的网页,这会减慢我的网页速度。

我在网上看到,如果没有提到端口,就会出现此错误。但我的端口号是红帽开放式配置页面。

下面是socket.io如何在我的初始html页面初始化节点js初始服务器页面的代码

的index.html

var socket =io();

index.js(node js server)

var app = express();
var server = app.listen(process.env.NODE_PORT || 3006, process.env.NODE_IP || 'localhost', function(){
    console.log('listening on port 3006');
});

var io = require('socket.io').listen(server);

io.on('connection', function(socket) {
    console.log('a user connected');
    socket.on('disconnect', function() {
        console.log('user disconnected');
    });
    socket.on('chat message', function(msg) {
        console.log(msg);
        io.emit('chat message', msg);
    });

1 个答案:

答案 0 :(得分:-1)

XHR long polling是socket.io客户端的默认连接类型。初始连接将以polling开头,因此您始终会看到http://url/socket.io/?EIO=3&transport=polling网址的至少一些请求。

然后,客户端将尝试升级到websocket连接。那些无法升级的客户将继续定期轮询以尽可能接近实时。如果您有大量客户端每2秒轮询一次,那么您将看到很多请求。