2014-03-29 61 views
2

我們已經建立了PHP Laravel,這暴露通過JSON API調用了一堆方案對象的Web應用程序。我們希望在我們的架構,以配合改變AngularJS以這樣的方式,當數據庫更新時,AngularJS模型(以及隨後的視圖)也更新,實時。同步數據庫Laravel承諾與AngularJS模型/視圖

在數據庫方面,它可以是任何東西,如MySQL,SQL Server等有一對夫婦,我們正在考慮這個方法:

  • MySQL的承諾觸發某種事件在然後Laravel在AngularJS中發出所有相關/傾聽模型/視圖的呼叫。
  • 任何數據改變之前(編輯/加入) - Laravel觸發一個事件到AngularJS。換句話說,在任何成功的數據庫提交之後,另一個「事情」將完成通知。

第二個看起來很明顯,乾淨的做法 - 因爲數據庫沒有涉及降低堆棧。有沒有更好的方法來做到這一點?

這個問題是相關的: How to implement automatic view update as soon as there is change in database in AngularJs? 但我不太明白的回答是「房間」的概念。

什麼(如果有的話)是有效地配合數據庫的最佳方式提交(推)到AngularJS視圖(渲染的變化)?當然,我們希望避免每秒輪詢JSON API進行更改。

+0

外觀與彗星/長輪詢的pub/sub。網絡套接字很好,但還沒有完全支持。 –

+0

socket.io適合在AngularJS和Laravel中使用嗎? –

回答

0

我也有我的項目的一個類似的要求。我們使用node.js和sockjs來解決它。流程是這樣的:

  1. 有一個node.js + SockJS服務器,所有客戶端連接。
  2. 當數據庫被更新,laravel通過HTTP發出到node.js的命令(Redis的也是一個posibility)
  3. Node.js的廣播事件給所有感興趣的客戶(這取決於你的業務邏輯)
  4. 無論是客戶端重新加載所需的數據,或者如果消息足夠小,它可以包含在node.js廣播中。

希望這會有所幫助。沒有使用其他技術(node.js/web socket/SSE等)沒有乾淨的方式來做到這一點。這很大程度上取決於客戶將使用的配置。

+0

在與AngularJS和Laravel合作方面,socket.io似乎是合適的? –

+0

socket.io應該沒問題。您仍然需要通知laravel(直接http或使用redis等)的節點服務器(承載socket.io)有需要廣播的消息。 –