主服务器上的节点js套接字连接错误

时间:2021-05-19 08:59:05

标签: node.js sockets websocket socket.io

我的应用程序套接字有问题

在我的程序中,一个套接字用于从服务器接收信息。从用户进入我的网站的那一刻起,浏览器控制台就显示以下错误

WebSocket connection to 'ws://beta.101bitcom.com/socket.io/?EIO=4&transport=websocket&sid=wQ1Rm-Fo3Sp68qUxAAAA' failed:    websocket.js:87

在这种情况下,socket 仍然可以工作,但一段时间后错误数量增加,socket 完全停止。下图是导致socket完全停止的错误。

enter image description here

这些问题在localhosts都不存在,只有在主服务器上运行程序时才会出现这些错误(我使用cpanel和应用程序管理器在服务器上运行程序)

这是我的代码:

服务器端(app.js):

const express = require('express');
const app = express();
const http = require('http');

// require config file
global.config = require('./modules/config');


let port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

const server = http.createServer(app);

/**
 * START: call socket file 
 */
const io = require('socket.io')(server);
require(`${config.path.sockets}/Socket-v1`)(io);
/**
 * END: call socket file 
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

服务器端(Socket-v1.js):

const Crypto = require(`${config.path.models}/Crypto`);

module.exports = function (io) {

const getCryptoApiAndEmit = async io => {
        try {
            Crypto.find({}).sort({market_cap_rank: 1}).collation({
                locale: "en_US",
                numericOrdering: true
            }).exec((err, docs) => {
                io.emit("getCryptoData", docs);
            });
        } catch (error) {
            console.error(`Error: ${error.code}`);
        }
    };

io.on("connection", (socket) => {
        console.log('user connected');

        socket.on('getCryptoData', () => {
            setInterval(() => getCryptoApiAndEmit(socket), 1000);
        })

        socket.on('disconnect', () => {
            console.log('user disconnected');
        });
    }

}

客户端代码:

<script src="/socket.io/socket.io.js"></script>

let socket = io();

socket.emit('getUsersData');
socket.on('getUsersData', (data) => {
    showUsersData(data)
});

0 个答案:

没有答案