【问题标题】:How to get updates from backend automatically in client side如何在客户端自动从后端获取更新
【发布时间】:2023-01-13 00:27:31
【问题描述】:

我有 3 个应用程序,移动应用程序(反应原生),网络应用程序(反应 js)和一个 Nodejs 应用程序。 移动应用程序是电子商务移动应用程序,网络应用程序是管理页面(客户端)。管理页面从使用 firebase admin sdk 的 NodeJs 应用程序(api)获取所有数据。
问题是我希望每次用户使用移动应用程序下订单时,管理页面都会自动从 NodeJs 应用程序获取数据。

接口代码:

router.post("/orders", function(req, res, next) {
  const {filterBy} = req.body;
  let orders = [];
  if(filterBy === "all"){
    db.ref("orders").on('value',function(snap){
      if(snap.val){
        snap.forEach(function(child){
          let items = child.val();
          orders.push(items);
        })
      }
    })
  }else{
    db.ref("orders").orderByChild("generalStatus").equalTo(filterBy)
    .on('value',function(snap){
      if(snap.val){
        snap.forEach(function(child){
          let items = child.val();
          orders.push(items);
        })
      }
    })
  }
  res.json(orders.reverse());
});

【问题讨论】:

  • Firebase 有自己的实时事件管理,但我不记得它是如何工作的。如果您使用后端而不是直接使用 Firebase,则需要使用 WebSockets(已建议)或 SSE(服务器端事件)等机制等技术进行一些工作。如果你真的不想为这些烦恼,你总是可以做一个从前端到服务器的轮询率(例如每 1 分钟),然后从那里做一个/get(或/fetch)。但是请不要这样做。

标签: node.js reactjs firebase react-native firebase-realtime-database


【解决方案1】:

您可以在您的网络应用程序和后端之间创建套接字连接。每当有人在移动应用程序上下订单时,您都可以在后端 api 中触发一个事件,客户端也可以收听该事件。

你可以使用 socket.io https://socket.io/get-started/chat

【讨论】:

    【解决方案2】:

    您还可以在 firebase 文档上添加侦听器并使用方法 on 检查数据库中的任何更改,例如,如果您想从聊天数据库获取更新,您可以使用此代码,例如

    const chatRef = database().ref(firebaseMessages.CHAT);
    
    let listener = chatRef.on('value', snapshot => {
       console.log('User data: ', snapshot.val());
    });
    //...
    // Later when you no longer need the listener
    chatRef.off('value', listener);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2012-05-01
      相关资源
      最近更新 更多