1

我的目标是让场景如下:

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 吗?我意识到一个更简单的解决方案是简单地在一个窗口中完成所有事情。我正在使用快递/车把。

4

2 回答 2

2

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

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

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

于 2013-11-15T10:12:27.463 回答
1

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

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

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

在窗口 B

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

或者

window.opener.myGlobalNamespaceObject.property = myResult

另一种解决方案是为此使用 cookie 或 localStorage。
实际上 localStorage 触发一个事件,当数据已经设置(见这个问题:localStorage eventHandler 不被调用

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

于 2013-11-15T10:26:23.680 回答