Этот код, который я написал для нескольких подключений через веб-сокет, имеет некоторую проблему, когда мне нужна помощь, т.е. когда я подписываюсь на одну группу (topi c 1) и через некоторое время пытаюсь подписаться на другую группу (topi c 2 ) тогда предыдущий topi c (topi c 1), который был подписан, будет отключен, помогите мне с этим
var WebSocket = require('ws');
var node = this;
let urls =msg.payload.urls;
let connections = {};
for(let k in connections) {
connections[k].close();
connections[k].reconnect=false
console.log('connection closed:::');
}
for(let i=0;i<urls.length;i++){
console.log(':::::::for loop:::::::')
console.log('url----'+urls[i])
function connect(urlIndex) {
let ws;
if(urlIndex!=undefined||urlIndex!=null){
ws = new WebSocket(urls[urlIndex]);
}
else{
ws = new WebSocket(urls[i]);
}
ws.index=i;
ws.reconnect=true;
ws.onopen = function() {
};
ws.onmessage = function(e) {
console.log('Message:', e.data);
msg.payload=e.data;
node.send(msg);
};
ws.onclose = function(e) {
console.log('Socket is closed. Reconnect will be attempted in 1 second.', e.reason);
setTimeout(function() {
console.log("onclose ----ws reconnect"+ws.reconnect)
if(ws.reconnect){
console.log("inside if reconnect")
connect(ws.index);
}
}, 30000);
};
ws.onerror = function(err) {
console.error('Socket encountered error: ', err.message, 'Closing socket');
ws.close();
};
connections[urls[i]]=ws
}
connect();
}