我的应用程序套接字有问题
在我的程序中,一个套接字用于从服务器接收信息。从用户进入我的网站的那一刻起,浏览器控制台就显示以下错误
WebSocket connection to 'ws://beta.101bitcom.com/socket.io/?EIO=4&transport=websocket&sid=wQ1Rm-Fo3Sp68qUxAAAA' failed: websocket.js:87
在这种情况下,socket 仍然可以工作,但一段时间后错误数量增加,socket 完全停止。下图是导致socket完全停止的错误。
这些问题在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)
});