2015-04-21 36 views
0

我一直在閱讀有關新的AWS Lambda技術,我一直在嘗試一些示例。當我們向S3上傳一個新的數據文件時,我真的很希望能夠爲客戶提供新的內容,但是我不清楚我能否做到這一點。如何將客戶端JS與AWS lambda同步?

我可以看到,我可以在lambda中運行腳本來記錄對S3的更改,但是如何將這些更改與運行在瀏覽器中的客戶端腳本同步。那可能嗎?

很顯然,我可以輪詢bucket對象並在其更改時顯示新內容,但是有沒有辦法在改變node.js的方式時將數據推出?那時我不需要不斷地打它,當它沒有改變時。

+0

起初,我在考慮Cognito同步,但試圖做一個概念驗證,我打了一些障礙。所以我會提出一些更瘋狂的建議:[webhook](http://en.wikipedia.org/wiki/Webhook)。在你的後端服務器上,實現一個將被Lambda函數調用的端點......它基本上會說:「嘿,S3中有新的數據!」此時,您的服務器可以將事件推送給客戶端,並且客戶端可以輪詢(一次)新數據。 –

回答

0

我不認爲真的可以有任何形式的推送機制在工作。推送需要服務器偵聽響應。這意味着從技術上講,這種情況發生的唯一途徑是每個客戶端都有一個正在偵聽TCP端口的服務。在移動客戶端的情況下,他們確實在收聽短信。

在大多數情況下,push實際上仍然是在不同級別的堆棧上進行拉取。即使在頂層應用程序中,代碼也可能允許使用推式範例,但如果我們將代碼降低一級,則可能是拉式。例如,如果您確實設計了查詢S3或lambda或更新的週期性JS腳本。客戶端用戶界面不會知道它是這樣做的,所以它似乎是對他們的推動;神奇的數據流傳輸到他們的客戶端,就像流式視頻可能工作一樣。

我會建議咬住項目符號,並在API網關中設置緩存,並在S3上進行預期的TTL更改,然後讓客戶端查詢該資源。

+0

剛纔我發佈了這個問題,但node.js實際上可以*使用websocket *推送*。 Meteor(一個基於node.js的框架)會自動完成此操作。還有一些新的HTML5技術,例如*服務工作者*可能可以實現這一點。 – Octopus