客户端热更新机制实现
2017-08-02 本文已影响0人
环零弦
客户端热更新机制实现
客户端和服务器端各自维护两个版本描述文件:
来自chcp.json
:
{
"server_urls": [
"192.168.1.251",
"192.168.1.250",
"192.168.1.106",
"192.168.1.241",
"192.168.1.110"
],
"release": "2017.07.16-18.54.39"
}
来自chcp.manifest
:
[
{
"file": "50x.html",
"hash": "d74f9cdd604653c22c6752c46fffd587"
},
{
"file": "index.html",
"hash": "4279d6e7f61095181041d9ac9733a1e6"
}
]
文件命名主要参考Cordova
热更新插件,之所以用它的规范,主要是起初想用它实现一部分终端的热更新,但是后来决定不用了,但命名规则保留了。
chcp.json
中维护两个属性,一个是服务器列表,一个是当前版本;chcp.manifest
中维护当前每个文件及其散列值。
更新逻辑:
- 客户端(下称Client)根据本地
chcp.json
中的服务器列表,向服务器请求服务端的chcp.json
文件。 - 获得服务器的
chcp.json
文件后,首先更新本地的服务器列表。 - 对比本地主版本号与服务器端主版本号。
- 如果一样,进入程序主页
- 如果不一样,下载服务器端
chcp.manifest
文件。 - 对比本地
chcp.manifest
文件与服务器端chcp.manifest
文件的差异:- 记录只有本地才有的文件名,这些文件待删除。
- 记录只有服务器端才有的文件名,这些文件带下载。
- 本地和服务器端一致的文件,对比其散列值,如果一致,不作操作,如果不一致,删除本地文件,下载服务器端文件。