如何从后端通知前端?

Posted

技术标签:

【中文标题】如何从后端通知前端?【英文标题】:How to notify front-end from backend? 【发布时间】:2017-11-09 18:17:46 【问题描述】:

我正在使用 multer 进行文件上传。在服务器上我有这个:

stream.on('finish', () =>                                                                               
  console.log('finished')                                                                                
  next()
)

通知前端“完成”已经发生的最好方法是什么(使用什么命令)?我想知道这一点以便有一个加载栏。

【问题讨论】:

这就是 websocket 的用途。服务器可以向客户端发送数据,反之亦然。查看 socket.io。服务器:socket.emit("upload finished"),客户端:socket.on("upload finished", function...) 太棒了!谢谢。 我已经添加了这个作为答案,如果您能验证它,我将不胜感激:) 【参考方案1】:

这就是 websocket 的用途。服务器可以向客户端发送数据,反之亦然。查看socket.io。

服务器:socket.emit("upload finished")

客户:socket.on("upload finished", function...)

【讨论】:

【参考方案2】:

虽然Jeremy Thille 的回答效果很好,但请注意向所有人广播事件。

Socket.emit() 只是向所有连接的客户端广播消息。

因此,您需要存储上传者的客户端 ID,并将进度仅通知该客户端而不是全部。 参考this。

【讨论】:

你说得对,这些都在文档中列出(这就是我提供链接的原因)【参考方案3】:

您可以使用套接字进行这种类型的通信。 socket.io 是一个用于 web 套接字的节点包。在您拥有的服务器中

socket.emit('done')

而在客户端,您可以附加到发射以接收新数据

socket.on('done', function (data) 
    // Do something with data
); 

【讨论】:

以上是关于如何从后端通知前端?的主要内容,如果未能解决你的问题,请参考以下文章

跨站点 cookie 的问题:如何将 cookie 从后端设置到前端

ReactJS中如何将图片从后端发送到前端

如何正确地将自定义错误从后端(Express)传递到前端(Vue)

根据请求jQuery将pdf从后端传输到前端

将值从后端 nodejs 传递到前端反应原生

从后端开发转职前端开发,我学到了什么?