Javascript 如何检查WebSocket.server连接是否打开或关闭?
我正在使用node js,我不知道如何检查我的WebSocket.Server连接是否打开或关闭,是否有类似socket.readyState的功能 我这样问是因为我有问题,当我+其他人在同一时刻重新加载192……/xxx时,我得到一个错误Javascript 如何检查WebSocket.server连接是否打开或关闭?,javascript,node.js,websocket,Javascript,Node.js,Websocket,我正在使用node js,我不知道如何检查我的WebSocket.Server连接是否打开或关闭,是否有类似socket.readyState的功能 我这样问是因为我有问题,当我+其他人在同一时刻重新加载192……/xxx时,我得到一个错误错误:听着EADDRINUSE:::3001,我不知道它在哪里爆炸 我还想提到,我确实关闭了连接,但只在一个点上,这里是我的代码示例 router.get('/', function(req, res, next) { wss.on('connection
错误:听着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;
在我看来,websocket服务器依赖于特定的端点。您遇到的错误是试图将多个websocket服务器绑定到同一端口。您只需要一个websocket服务器来处理多个客户端连接。我建议您将它们分开,让websocket服务器与express应用程序一起运行 让端点执行某些操作(如关闭websocket)是很酷的,但如果您正在执行类似操作,我建议对它们进行身份验证 您遇到的错误是100%服务器端,端口3001正在使用中。它正在尝试在端口3001上启动websocket服务器,并且已经有一个正在运行。您可以使用不同的端口,也可以仅使用原始websocket服务器为多个客户端提供服务 要真正回答您提出的问题,我认为正确的方法是为您的websocket服务器实现心跳。这应该在
n
分钟/秒/毫秒之后发送(我可能会选择分钟)。最好使其双向,以便服务器和客户端知道连接何时断开