【问题标题】: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...)
  • 太棒了!谢谢。
  • 我已经添加了这个作为答案,如果您能验证它,我将不胜感激:)

标签: javascript


【解决方案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
    }); 
    

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多