2013-11-15 59 views
1

窗口之間發送數據,我的目標是讓情況如下:我想知道是否有可能使用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的?我意識到一個更簡單的解決方案就是隻需在一個窗口中完成所有操作。我正在使用快遞/句柄。

+0

使用postMessage – moka

回答

2

您應該查看Socket.io,它可以在您的Node.js服務器和所有瀏覽您的網頁的客戶端之間進行實時通信。

在您的特殊情況下,在窗口B關閉之前,服務器應該使用新數據向客戶端發送消息。客戶端代碼然後將能夠用新信息更新網頁。

如果您正在尋找準系統解決方案,請查看WebSockets API(Socket.io摘要)。如果你想使用爲實時應用程序構建的完整框架,請查看Meteor(顯然,這將需要更多的代碼修改)。

1

實際上你不需要在服務器上完成它。
據我所見,你的兩個窗口在同一個主機/域上打開(包括同一個端口和子域)

這意味着兩個窗口都可以在客戶端與對方進行「對話」。
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去爲對方的回答指出。

+0

如果您對它進行編輯以使用適當的大寫字母和句子,您會得到一個很好的答案。 – WiredPrairie

相關問題