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



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

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

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

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

我在互联网上读到,如果未提及端口,则会出现此错误。但是我的端口号来自红帽打开班次配置页面。

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

索引.html

var socket =io();

索引.js(节点 JS 服务器(

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);
    });

在 socket.io 客户端 v1.x 中,初始连接将按polling启动,因此您将始终看到至少一些对 http://site.url/socket.io/?EIO=3&transport=polling URL 的请求。

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

v2.x+ 客户端首先转向使用 Websocket,但如果 websocket 连接失败,将回退到相同的长轮询 URL。