如何从后端通知前端?
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 从后端设置到前端