我想知道是否可以使用 node.js 在窗口之间发送数据
I am wondering if it is possible to send data between windows using node.js
我的目标是实现如下场景:
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 进行操作。
相关文章:
- 基本html页面和弹出窗口之间的数据交换
- 在angularJS中使用模态窗口时,在控制器之间共享对象数组
- 在 AngularJS 和非 AngularJS 弹出窗口之间共享变量
- 在多个子弹出窗口之间切换控制
- titanium:窗口和视图之间的区别
- 在正常模式和全屏模式之间切换窗口
- 如何在Chrome扩展弹出窗口和内容脚本之间发送消息
- 我想知道是否可以使用 node.js 在窗口之间发送数据
- 选项卡或窗口之间的通信
- 如何在“窗口”之间进行选择.URL.createObjectURL()' 和 'window.webkitURL.cre
- 同位素包装中项目之间的发际线间隙在窗口调整大小时
- 两个窗口之间的 Websocket 通信
- 测量元素和窗口边距之间的长度
- postMessage() iFrame 和/或弹出窗口之间的 ie6/7 替代品
- 窗口之间有什么区别.主干网中的视图名称和视图名称.js
- 下拉菜单和 AJAX 窗口之间的 jquery 冲突
- 如何使用 postMessage 在顶级窗口之间共享数据
- 是否可以使用 JQuery 或其他方法在两个浏览器窗口之间拖放一些内容
- 两个浏览器窗口之间的通信:弹出窗口和父窗口
- 弹出窗口和原始打开器之间的通信