В nodejs Я использую библиотеку ws-reconnect
для клиента websocket. Ниже приведен код, который я использую для подключения к нескольким конечным точкам.
КЛИЕНТ САЙТА:
var WSCLIENT = require('ws-reconnect');
const urls = ['ws://localhost:8081','ws://localhost:8080'];
let connections = [];
urls.map( function(url) {
console.log('url----'+'\n')
var wsclient = new WSCLIENT(url,{
retryCount:1, // default is 2
reconnectInterval: 1 // default is 5
});
wsclient.start();
wsclient.on("message",function(data){
console.log(data);
});
wsclient.on("reconnect",function(){
console.log("reconnecting");
});
wsclient.on("connect",function(){
console.log("connected");
wsclient.send(url);
});
wsclient.on("destroyed",function(){
console.log("destroyed");
});
})
СЕРВЕР САЙТА:
var WSS = require('ws').Server;
// Start the server
var wss = new WSS({ port: 8081 });
// When a connection is established
wss.on('connection', function(socket) {
console.log('Opened connection ');
// Send data back to the client
var json = JSON.stringify({ message: 'Gotcha' });
socket.send(json);
// When data is received
socket.on('message', function(message) {
console.log('Received: ' + message);
});
// The connection was closed
socket.on('close', function() {
console.log('Closed Connection ');
});
});
// Every three seconds broadcast "{ message: 'Hello hello!' }" to all connected clients
var broadcast = function() {
var json = JSON.stringify({
message: 'Hello hello!'
});
// wss.clients is an array of all connected clients
wss.clients.forEach(function each(client) {
client.send(json);
console.log('Sent: ' + json);
});
}
setInterval(broadcast, 3000);
Вышеуказанный сервер работает на 8080 и 8081 порту. Но в коде клиента websocket у меня есть url как массив, который будет иметь несколько конечных точек. Но то, что я хотел, это каждые 5 минут, как только я извлеку все конечные точки webocket из API и вставил в массив urls
, если конечная точка уже подключена, я хотел бы проигнорировать, поскольку я не хочу подключаться снова. Если конечная точка, которая уже подключена, отсутствует в списке, полученном из вызова API, отключите эту конечную точку веб-сокета. Как я могу достичь?