【问题标题】:I am wondering if it is possible to send data between windows using node.js [closed]我想知道是否可以使用 node.js 在窗口之间发送数据 [关闭]
【发布时间】:2013-11-15 09:58:40
【问题描述】:

我的目标是有如下场景:

1) User opens myapp.com in Window A
2) User clicks button which opens myapp.com/doWork in Window B
3) After performing some operations and retrieving data (requiring user input), Window B closes
4) Window A displays the data retrieved from Window B

这可以使用 node.js 吗?我意识到一个更简单的解决方案是简单地在一个窗口中完成所有事情。我正在使用快递/车把。

【问题讨论】:

    标签: javascript node.js express handlebars.js


    【解决方案1】:

    您应该查看Socket.io,它可以在您的 Node.js 服务器和所有打开您网页的浏览器客户端之间实现实时通信。

    在您的特定情况下,在窗口 B 关闭之前,服务器应该向客户端发送一条带有新数据的消息。然后,客户端代码将能够使用新信息更新网页。

    如果您正在寻找准系统解决方案,请查看WebSockets API(Socket.io 抽象出来的)。如果您想使用为实时应用程序构建的完整框架,请查看Meteor(显然这需要更多代码修改)。

    【讨论】:

      【解决方案2】:

      其实你不需要在服务器上做。
      据我所知,您的两个窗口都在同一个主机/域上打开(包括相同的端口和子域)

      这意味着两个窗口可以在客户端相互“对话”。
      windowB 有 window.opener 属性。

      所以windowB发生了什么,你可以随时告诉windowA发生了什么,就像这样。

      在窗口B中

      window.opener.setData(myResult); // window.opener == windowA
      

      window.opener.myGlobalNamespaceObject.property = myResult
      

      另一种解决方案是使用 cookie 或 localStorage。
      实际上 localStorage 触发一个事件,当数据已经设置(见这个问题:localStorage eventHandler Doesn't Get Called

      如果您不共享同一个域,请使用其他答案指出的 socket.io。

      【讨论】:

      • 你有一个很好的答案,如果你编辑它以使用正确的大写字母和句子来改进它。
      猜你喜欢
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2021-12-21
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多