使用setInverval 向nodejs 执行GET 请求?

Use setInverval to perform GET requests to nodejs?

我将 nodejs 与 express 结合使用来读取 mongodb 中的一个集合,以便向用户显示一组消息。我读过 http2,但我不知道在客户端使用 setInterval 接收更新的消息列表是否有任何显着优势。我基本上是在做:

setInterval(()=>{ 
            this.props.getSession(session_id);
        }, 5000);

这会获取 mongodb 文档的 _id,并每 5 秒在 GET 请求中将其发送到 nodejs。这会在野外造成严重的问题吗?我基本上害怕这会导致大规模的可怕性能问题,但我想知道除了看起来令人难以置信的复杂 http2 实现之外,我还有什么替代方案可能有许多安全漏洞。

我想我也可以将我的问题改写为,这是否会导致我的服务器因少量用户而崩溃 运行 特定页面上的此代码?

好的,所以我找到了处理这个问题的最佳方法,过分关注消息在数据库中的存在方式并没有帮助。我最终使用了一个名为 socket.io 的网络套接字库。我能够为页面加载时连接到服务器的每个组创建唯一的 "rooms"。消息会话的 mongodb _id 用于动态创建房间,如下所示:

io.on('connection', async function(socket){
    socket.on('session' async (session)=>{
        socket.join(session.session_id); //not shown: session join authentication
    });
    socket.on('send', async (d)=>{


        try{
            const {text} = d.body;
            const {token, session} = d.head;
            //custom function that is async to parse jwt token and do db.MessageSession.create({})
            const result = await socketMeassageAuthAndSend(session, token, text);
            const {flag, user, _id, date} = result;

            if(flag === 'auth'){
               socket.broadcast.to(session).emit('socket_message_broadcast', {text,user,_id,date})
             }else{
               socket.emit("unauthorized", {message: "will place ip address here to send to admin panel"});
             }}catch(err){
                 console.log(err);
               }
     });

这用于执行通过 mongo 数据库进行身份验证和授权的更新。不需要来自 mongoose 的事件驱动,它使数据库与用户视图实时同步。