介绍一种实时更新网页的方案

传统模式

传统模式下网页对数据库的读写相似于下面这种:
传统模式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,他们的官方网站有较详细的教程,跟着教程一步一步走下来,很快就能理解。

相关文章
相关标签/搜索