簡體   English   中英

AngularJS和MySQL實時通信

[英]AngularJS and MySQL real-time communication

我使用AngularJS(前端)和PHP / MySQL(后端)構建了一個Web應用程序。

我想知道是否有辦法“觀察”MySQL數據庫(沒有Node.js),因此如果一個用戶向其添加了一些數據,那么更改也會同步到其他用戶。

例如,我知道Firebase會這樣做,但它是面向對象的數據庫,我無法像使用SQL那樣進行高級查詢。

我正在考慮使用$interval$http並執行ajax請求,這樣我就可以檢測到數據庫中的更改。 嗯,這是可能的,但它每天會向服務器發送數千個http請求,並在每個請求上加上解釋php。

我相信沒有什么是不可能的,我只需要一個想法來做這個,我沒有,所以這就是我在這里尋求幫助的原因。

如果您想要一種“實時通信”形式,您可能需要從客戶端采用某種形式的長輪詢。 除非你使用網絡套接字,但這是一個關於一堆不同的東西的大帖子。 你應該關心數據庫的帶寬和需求。 所以這是我的建議:

如果您沒有使用Web套接字的經驗,請在單獨的表/視圖中記錄您的事件,並使用pub / sub方法將實體訂閱到事件,並將該事件廣播到表中。 然后對觀察者視圖進行長輪詢以查看可能發生的更改。 如果確實發生了一個,那么您查詢確切的值。

另一種選擇是使用一些查詢系統和“決策者”來保存消息。 看看亞馬遜的SQS平台,以更好地解釋這是如何工作的。 基本上,您有一個保存消息的隊列,並且決策者使用一些散列或排序方法選擇存儲消息的位置(以減少運行時間)。 當客戶端請求更新時,決策程序會根據哈希/排序查找將應用的任何消息並返回它們。 然后你只需要決定如何以及何時破壞消息。

第二種選擇需要更多的修補,所以它真的是關於你的偏好。 我認為你會發現難以理解的是,大多數解決方案必須處理這樣一個事實,即消息必須被傳送一次或多次,你需要跟蹤某人何時收到消息,現在是否可以從隊列/事件表中刪除或者您是否還需要等待。 否則你會消耗大量內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM