介紹一種實時更新網頁的方案

傳統模式

傳統模式下網頁對數據庫的讀寫相似於下面這種:
傳統模式mysql

  1. 張三經過瀏覽器訪問web服務器,修改數據;react

  2. web服務器把新數據寫入數據庫;git

  3. 李四並不知道數據庫是否有變化,他必須刷新瀏覽器頁面,瀏覽器訪問服務器;github

  4. 服務器再次訪問數據庫;web

  5. 數據庫把新的結果返回給服務器;sql

  6. 服務器返回新頁面給李四。數據庫

meteor模式

meteor提供了一種新的思路:
meteor模式瀏覽器

  1. 張三經過瀏覽器訪問web服務器;服務器

  2. web服務器把新數據寫入數據庫;websocket

  3. 數據庫通知web服務器有新數據產生;

  4. web服務器通知瀏覽器有新數據,瀏覽器自動變化頁面,李四就看到結果了。

meteor原理

在後面一張圖中,第4步的動做比較好理解,就是經過在web服務器和瀏覽器之間創建一條websocket通道,就能實現服務器和瀏覽器之間的雙向通信。

奇怪的是第3步,數據庫是怎麼通知web服務器有數據變化的呢?

當你在安裝meteor-mysql插件後,再次啓動meteor時,它會不停地告誡你:你須要開啓mysqlbin_log。mysql的bin_log是幹什麼用的呢?幾乎全部資料都會談到什麼主從架構。

實際上,meteor在這裏只是把本身假裝成是一個mysql的從服務器。你們都知道,數據庫的主從服務器是須要數據同步的,也就是說當主mysql服務器的數據發生變動時,它會以bin_log的形式通知從服務器,從服務器只須要檢查這個bin_log就知道主服務器發生變動了。

因此,若是你沒有開啓bin_log的話,meteor也能夠知道數據庫的變化,只不過是用一種比較笨拙的輪詢方式。而若是開啓bin_log的話,meteor再也不以輪詢方式訪問數據庫,而是等待主服務器向本身推送數據了。

我這裏寫了一個簡單的例子meteor如何鏈接mysql數據庫,感興趣的能夠嘗試一下。

關於如何安裝和使用meteor,他們的官方網站有較詳細的教程,跟着教程一步一步走下來,很快就能理解。

相關文章
相關標籤/搜索