как подключить и отключить клиент websocket динамически в nodejs - PullRequest
0 голосов
/ 06 февраля 2020

В 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, отключите эту конечную точку веб-сокета. Как я могу достичь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...