我想知道是否可以使用 node.js 在窗口之间发送数据

I am wondering if it is possible to send data between windows using node.js

本文关键字:之间 窗口 数据 js 是否 想知道 可以使 node      更新时间:2023-09-26

我的目标是实现如下场景:

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

您应该

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

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

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

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

这意味着两个窗口都可以在客户端相互"交谈"。
windowB 具有用于此的 window.opener 属性。

所以在窗口

B中发生了什么,在任何时候你都可以告诉窗口A发生了什么,就像这样。

在窗口 B 中

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

window.opener.myGlobalNamespaceObject.property = myResult

另一种解决方案是使用cookie或localStorage。
实际上,当设置数据时,localStorage 会触发一个事件(请参阅此问题:localStorage eventHandler 不会被调用)

如果您不共享同一域,请按照其他答案指出的 socket.io 进行操作。