У меня проблемы с подключением к веб-сокету после прерывания потока.
Я не знаю root причину, по которой поток данных прерывается. Мой VPS-сервер работает постоянно, у меня есть inte rnet доступ к нему, есть другая программа, которая работает в то же время и не имеет проблем с сетью.
Но для каждого полученного пакета я увеличить мой счетчик i, и если я не изменился более 20 секунд, я пытаюсь восстановить соединение. Но любые попытки кода пока не увенчались успехом, он просто зацикливается и пытается восстановить соединение.
Nodejs, работающий на приличном linux сервере. Использование памяти или процессора во время отключения нормально. Разъединения не имеют закономерности, иногда запускаются в течение 2 дней без проблем, иногда отключаются 4 раза в день. Когда поток останавливается, единственный способ перезапустить это выйти из моего кода и запустить его снова, и он сразу же работает, поэтому никаких проблем на стороне сервера.
Мой код повторного подключения, который выполняется каждые 20 сек c ( который совпадает с моим исходным кодом подключения, за исключением дополнительной строки: const WebSocket = require ('ws');
//catch broken stream, if i is not changing, close and reconnect and alert through Telegram
if (i == prev_i) {
ws.terminate();
setTimeout(function() {
console.log('waiting to reconnect');
const ws = new WebSocket('wss://streamer.cryptocompare.com/v2?api_key=6f56....fe10');
ws.on('open', function open() {
ws.send('{"action": "SubAdd","subs": ["0~coineal~BTC~USDT"]}');
});
}, 10000);
console.log("Reconnecting to stream");
var strMessage = "Reconnecting to stream"
var message = "chat_id=" + strChatId + "&text=" + strMessage
var request = require('request');
request.post({
headers: {'content-type' : 'application/x-www-form-urlencoded'},
url: Url,
body: message
}, function(error, response, body){
});
}
prev_i = i;
edit 5.5.2020: согласно предложению ниже, я изменил свой код выше от
const ws = new WebSocket(...
до
ws = new WebSocket(...
Сегодня поток сбрасывается впервые после изменения. К сожалению, вместо попытки восстановить соединение в al oop, как раньше, выполнение кода остановлено с сообщениями консоли на прикрепленном рисунке. Строка 120 - это строка, которую я изменил. ![enter image description here](https://i.stack.imgur.com/BxEsz.jpg)