我在节点js中有一个redis pub子消息系统,在该系统中,我通过发送类似这样的数据来订阅第三方套接字api
var SingletonSocket = (function () {
var instance;
function createInstance() {
var object = new WebSocket('external subscription api');
return object;
}
return {
getInstance: function () {
if (! instance) {
instance = createInstance();
}
return instance;
}
};
})();
redis.on('message', async (channel, message) => {
const key = 'centralidslist';
try {
const allcentralids = await data.lrange(key, 0, -1); // wesb
const markets = [...new Set(allcentralids)];
console.log(markets, "Socket Subscribed Data Started");
const ws = SingletonSocket.getInstance();
ws.on('open', function open() {
ws.send(`{"action":"set","markets":"${
markets.join(",")
}"}`);
});
ws.on('message', function open() {
// pushing the data to another redis channel here
});
} catch (error) {
console.error(error);
}
});
以上系统正常工作,但有时会中断,我必须重新启动服务器,有人能建议一种更好的方法来做到这一点,这样就可以处理连续的数据流而又不会中断,而且我在套接字时我也没有收到任何错误停止发布。欢迎任何建议,可以完全是redis问题吗?