Node.js 如何在nodejs中提供实时更新?

Node.js 如何在nodejs中提供实时更新?,node.js,reactjs,vue.js,Node.js,Reactjs,Vue.js,我在一个电子商务网站上工作。有时产品不再可用,但用户会将其添加到购物车或添加到其保存的项目中。如何实现该功能,以便在产品更新后,尽快通知用户 我想做一个cron工作,检查产品的状态,如果它仍然可用或最近已经更新。但我不知道这是否可行。我愿意接受更好的想法 谢谢 下面包括了类似的图片 做过一次现场投注应用,当然,现场更新是最重要的部分 我建议看看WebSocket。这个想法很直截了当。在后端,您发出一个事件,比如说itemGotDisabled,而在前端,您只需连接到websocket并监听事件

我在一个电子商务网站上工作。有时产品不再可用,但用户会将其添加到购物车或添加到其保存的项目中。如何实现该功能,以便在产品更新后,尽快通知用户

我想做一个cron工作,检查产品的状态,如果它仍然可用或最近已经更新。但我不知道这是否可行。我愿意接受更好的想法

谢谢

下面包括了类似的图片

做过一次现场投注应用,当然,现场更新是最重要的部分

我建议看看WebSocket。这个想法很直截了当。在后端,您发出一个事件,比如说
itemGotDisabled
,而在前端,您只需连接到websocket并监听事件

您可以创建一个自定义组件,该组件将处理与webscoket事件相关的逻辑,以获得更干净、更有组织的代码。您可以轻松地将任何类型的逻辑更新到组件,如
yourFEWebsocketInstance.onmessage=(event)=>{}


当然,这不是唯一的方法,我相信有一些软件包以更容易理解和更直接的方式实现了这一点。

做过一次现场投注应用程序,当然,现场更新是最重要的部分

我建议看看WebSocket。这个想法很直截了当。在后端,您发出一个事件,比如说
itemGotDisabled
,而在前端,您只需连接到websocket并监听事件

您可以创建一个自定义组件,该组件将处理与webscoket事件相关的逻辑,以获得更干净、更有组织的代码。您可以轻松地将任何类型的逻辑更新到组件,如
yourFEWebsocketInstance.onmessage=(event)=>{}


当然,这不是唯一的方法,而且我确信有一些软件包以更容易理解和更直接的方式实现了这一点。

您试图实现的内容属于实时更新类别,从技术上讲,实现这一点的选项不止一个

选择的解决方案将取决于您的应用程序体系结构和需求。同时,我可以建议研究Node.js的SDK,它可以提供一个良好的开端

下面是一个示例实现,在后端,您将在项目库存达到极限时发布消息:

// create client
var client = new Ably.Realtime('your-api-key');
// get appropriate channel
var channel = client.channels.get('product');
// publish a named (may be the product type in your case) message (you can set the quantity as the message payload
channel.publish('some-product-type', 0);
在订户端(即web客户端),您可以订阅消息并相应地更新UI:

// create client using same API key
var client = new Ably.Realtime('your-api-key');
// get product channel
var channel = client.channels.get('product');
// subscribe to messages and update your UI
channel.subscribe(function (message) {
  const productName = message.name;
  const updatedQuantity = message.data;
  // update your UI or perform whatever action
});

您试图实现的内容属于实时更新类别,从技术上讲,实现这一目标有多种选择

选择的解决方案将取决于您的应用程序体系结构和需求。同时,我可以建议研究Node.js的SDK,它可以提供一个良好的开端

下面是一个示例实现,在后端,您将在项目库存达到极限时发布消息:

// create client
var client = new Ably.Realtime('your-api-key');
// get appropriate channel
var channel = client.channels.get('product');
// publish a named (may be the product type in your case) message (you can set the quantity as the message payload
channel.publish('some-product-type', 0);
在订户端(即web客户端),您可以订阅消息并相应地更新UI:

// create client using same API key
var client = new Ably.Realtime('your-api-key');
// get product channel
var channel = client.channels.get('product');
// subscribe to messages and update your UI
channel.subscribe(function (message) {
  const productName = message.name;
  const updatedQuantity = message.data;
  // update your UI or perform whatever action
});

您可以使用服务器端事件您可以使用服务器端事件