Browser and Server Sync (Polling, Comet, Long Polling, WebSocket)
1 前言
这只是一篇简单介绍浏览器与服务器之间的实时数据交换的方法。 在客户端使用的是 coffeescript ,接触下来感觉这种语法还是不错的, 然后在学习的过程中,貌似coffeescript借鉴了许多 Ruby 的语法, 所以接下来我准备去看看Ruby,当然这个是题外话啦。 一旦接受了coffeescript这种设定,还是很带感的。
然后服务器用的是 python 的 Flask 这一WEB框架以及 nodejs
主要参考的是:Browser 與 Server 持續同步的作法介紹 (Polling, Comet, Long Polling, WebSocket)
2 环境的搭建
2.1 Flask
- Install 安装步骤,请移步 这里 ,这里是官方的安装方式,在这里我接触到了python的虚拟环境。 感觉用这个virtualenv的确不错,然后我找到了一篇介绍这种的文章:virtualenv
- Quick Start 请移步这里 。我也是跟着快速教程一步一步做的,写出来的服务器也很简单。 毕竟这篇文章的主题不是这个。
2.2 Nodejs
关于如何安装 nodejs 以及如何使用我在此不多累述。官方文档写的很详细。 然后我使用的是 expressjs 这一WEB框架。安装方式和快速入门点击 QuickStart 。
在这里着重写一下使用 coffeescript
来写nodejs的代码。
具体可以看这篇文章:My Node.js Express + CoffeeScript setup
我的做法只是用来其中的一条命令:
$ sudo npm install -g js2coffee
将express生成的app.js转成了app.coffee,然后将 package.json 中的
"start": "node app.js"
变成了:
"start": "coffee app.coffee"
具体的在我上面提到文章中有详细介绍。当然还可以看看这个:Express-coffee
3 Polling
这是轮询的方式,是一种很常见的解决方案。然后我这里没有写代码。 思路就是使用setInterval()函数,定时访问服务器。构成一个一个polling.
4 Comet
等待填坑……
5 Long Polling
长轮询方式。 代码:
6 WebSocket
等待填坑……
7 Socket.IO
Socket.IO 这个我个人感觉不错,支持的浏览器也很多,然后使用的是nodejs。 有空的时候看看源代码,看看究竟是如何实现的。
然后下面的代码都是按照官方的步骤做的,只是稍微修改了一下。具体的可以参照 这里
代码:
8 后记
然后接下来需要思考的是数据库更新,如何通知web服务器发送更新数据? 继续等待填坑……