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

逻辑逐风使
• 阅读 7016

传统模式

传统模式下网页对数据库的读写类似于下面这种:
介绍一种实时更新网页的方案

  1. 张三通过浏览器访问web服务器,修改数据;

  2. web服务器把新数据写入数据库;

  3. 李四并不知道数据库是否有变化,他必须刷新浏览器页面,浏览器访问服务器;

  4. 服务器再次访问数据库;

  5. 数据库把新的结果返回给服务器;

  6. 服务器返回新页面给李四。

meteor模式

meteor提供了一种新的思路:
介绍一种实时更新网页的方案

  1. 张三通过浏览器访问web服务器;

  2. web服务器把新数据写入数据库;

  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,他们的官方网站有较详细的教程,跟着教程一步一步走下来,很快就能理解。

点赞
收藏
评论区
推荐文章
九路 九路
4年前
啥是前端开发工程师必会的5种网页布局方法?
一、静态布局(staticlayout)即传统Web设计,网页上的所有元素的尺寸一律使用px作为单位。1、布局特点不管浏览器尺寸具体是多少,网页布
Irene181 Irene181
4年前
一篇文章带你搞懂非关系型数据库MongoDB
大家好,我是黄伟。今天给大家介绍芒果数据库,一起来看看吧。前言Mongodb,分布式文档存储数据库,由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。下面我们来说说它的具体用法吧。
Irene181 Irene181
4年前
一篇文章带你搞懂非关系型数据库MongoDB
大家好,我是黄伟。今天给大家介绍芒果数据库,一起来看看吧。前言Mongodb,分布式文档存储数据库,由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。下面我们来说说它的具体用法吧。
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
SpringBoot 中 mongo多数据源配置新姿势
SpringBoot对常用的数据库支持外,对NoSQL数据库也进行了封装自动化。这一篇主要讲springboot与mongo多数据源相关的配置1、mongo的介绍MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式,这里不再多做说明
Stella981 Stella981
3年前
Kerberos无约束委派的攻击和防御
 0x00前言简介当ActiveDirectory首次与Windows2000Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身份验证并需要授权用户更新后端数据库服务器上的记录的方案。这通常被称为Kerberosdoublehopissue(双跃点问题),
Stella981 Stella981
3年前
Django之Django模板
1、问:html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012082616:00:00,但是页面显示的却是Aug.26,2012,4p.m.答:为了页面和数据库中显示一致,需要在页面格式化时间,需要添加<td{{dayrecord.p\_time|date:
Stella981 Stella981
3年前
Html开发之Viewport的使用
     近年来随着移动端的快速发展,越来越多传统的web应用需要适配移动终端,下面记录一下如何通过viewport实现简单的不同型号的手机端的适配问题。不过在此之前,介绍一下如何通过Chrome浏览器,调试在移动终端上的效果。调试工具    首先我们打开chrome谷歌浏览器,输入天猫地址(实现了手机端适配),按F12进入开发者模式
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(