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

时间:2020-09-17 10:12:21

标签: javascript node.js websocket redis

我在节点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问题吗?

0 个答案:

没有答案