【问题标题】:Emit to a socket upon server reload服务器重新加载时发送到套接字
【发布时间】:2020-05-15 14:30:16
【问题描述】:

所以,我希望 socket.io 在服务器重新加载时向我的客户端发出。我正在使用 express、http 和 socket.io。我想在我的服务器重新加载时向客户端发出一条消息,说他们应该重新加载他们的页面。以下是我目前拥有的。当服务器启动时,它将向客户端发出。

http.listen(3000, () => {
  io.emit('server-update')
})

这就是我目前所拥有的一切。但这不起作用。有什么建议?谢谢!

【问题讨论】:

  • 我认为我们需要更多信息......我正在考虑回答,但我意识到我对你想要做的事情做出了太多假设。请进一步解释,包括有关您的环境的详细信息。您是在谈论使用工具进行热重载 - 什么工具?当您说它不起作用时是什么意思 - 是否有错误消息?等
  • 不,没有错误信息。这是更详细的代码。我的错 :) 我只想从 Node.js 服务器向客户端发出 socket.io 调用。没有错误消息,只是没有发出。
  • 在我的客户端我有 socket.on('server-update', () => {// Code})。一旦我重新启动服务器,代码似乎不会发出。我只是希望它向客户端发出一条消息,表明服务器已重新加载,因此为了获得最佳性能,他们应该重新加载浏览器。
  • 最好编辑您的问题以使其更清晰。我的猜测是缺少“重新连接”步骤-服务器关闭,客户端连接关闭/丢失,服务器重新启动并发送到不存在的连接。您可能需要重新连接;也许考虑在服务器关闭时发射,而不是在它启动时发射。
  • 哦!好主意啊!我该怎么做呢?抱歉,我对 Node.js 还是比较陌生。

标签: node.js express http websocket socket.io


【解决方案1】:

我想通了!感谢您的所有帮助!这是我想出的:

http.listen(3000, () => {
  setTimeout(() => {
    io.emit('server-update')  
  }, 1000)
})

等待用户连接会有所帮助:)

【讨论】:

    猜你喜欢
    • 2011-08-17
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多