Я использую узел js, и я не могу понять, как проверить, является ли мое соединение WebSocket.Server открытым или закрытым, есть ли какая-либо функция, такая как socket.readyState?
Я спрашиваю, потому что у меня есть проблема, когда я + кто-то еще перезагружает 192 ...... / xxx в тот же момент, я получаю ошибку Error: listen EADDRINUSE :::3001
, и я не могу понять, где она взрывается ..
Также я хотел бы отметить, что я действительно закрываю соединение, но только в одном месте, вот мой пример кода;
router.get('/', function(req, res, next) {
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('Client: Im on... /zzz');
})
});
wss.on('error', function error(err) {
console.log(wss.clients);
next(err);
});
//??
//wss.clients.clear();
db.all('SELECT rowid, * FROM ZZZZZZZZ', (err, rows) => {
//idk if its ok
if (err) next(err);
if (rows.length == 0) {
res.render('xxxxx/index', {
AAA: 'empty'
});
} else {
wss.close(function(err) {
if (err) next(err);
console.log('closing websocket at /zzz');
server.close();
setTimeout(function() {
wss = new WebSocket.Server({
port: 3001
});
}, 100);
});
res.render('xxx/index', {
AAA: rows
});
}
});
});
И вот что у меня выше моего роутера. Получите
let express = require('express');
let router = express.Router();
let sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('./xx/xx/xx/xxx/xx/xxx.db');
let WebSocket = require('ws');
let wss = new WebSocket.Server({ port: 3001 });
let server = wss._server;