将数据从服务器实时发送到前端的最佳方式 (MEAN)

Best way to send data from server to frontend in real time (MEAN)

我正在创建一个 nodejs (10.16) 和 angular(8) 应用程序,其目的是根据列表生成和邮寄 png 文件。用户应该进入主页面并加载一个 excel 文件,然后应用程序读取该文件并将其转换为数组,如:

list = [
  [name1, email1@mail.com]
  [name2, email2@mail.com]
  [        ...           ]
  [namex, emailx@mail.com]
]

通过 table 显示,如下所示:

然后,当用户点击发送按钮时,应用程序会创建 png 文件并将它们发送到给定的电子邮件。这整个过程(从用户点击发送到服务器完成发送最后一封电子邮件)每封邮件可能需要 1-3 秒,因此如果用户提供 10 封邮件,该过程可能需要 30 秒。

所以我想做的是显示一个进度条或某种通知机制来实时向用户显示正在处理哪个元素以及有多少邮件待发送。

问题是,例如,当用户选择 excel 文件时,我可以显示姓名和电子邮件,因为我所做的是将文件上传到服务器(后端),然后 returns 一个可以在前端处理的特定响应(实际上是 json),但它只是一个不随时间变化的元素。

所以问题是,resource/mechanism你会推荐我从后端实时发送数据到前端吗?这样我应该能够实时显示正在处理的资源。

我进行了一些研究并找到了有关 Server Sent Events 和 Websockets 的信息,但我真的很想知道这些方法是否正确以及我应该考虑哪些替代方法。

谢谢!

由于处理过程可能需要很长时间,您将需要与服务器保持通信并接收多个更新。 Websockets 绝对适合这里。

Socket.io 是一个很棒的库,并且易于用于实时通信。