Javascript 订阅redis发布/订阅消息上的套接字最佳设计

Javascript 订阅redis发布/订阅消息上的套接字最佳设计,javascript,node.js,websocket,redis,Javascript,Node.js,Websocket,Redis,我在NodeJS中有一个redis pub sub消息系统,在该系统中,我通过发送如下数据订阅第三方socket api var SingletonSocket = (function () { var instance; function createInstance() { var object = new WebSocket('external subscription api'); return object; } ret

我在NodeJS中有一个redis pub sub消息系统,在该系统中,我通过发送如下数据订阅第三方socket 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的问题