终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的。
服务器端要做得事很多,虽然逻辑不是很复杂,但是我们必须要分析清楚我们要做哪些事,请看下图:
通过这张图,我们看出,服务器端的接口一共有6个,分别处理:
- 手机客户端登录
- 首页
- 二维码图片流
- long polling维持
- 接收手机客户端已扫描的通知
- 接收手机客户端已确认登录的通知
那么一个一个解决
首先是手机客户端登录,在上一篇我们介绍的手机客户端登录我们仅仅模拟一下,因此用户只需要提交一个用户名,服务器则通过SHA1对用户名加密,将密文返回作为token。为了将来验证这个密文是否OK,我们将用户名和密文保存在redis内供将来验证使。
需要引用的包:
var http = require('http'), url = require('url'), fs = require('fs'), querystring = require('querystring'),qrcode = require('qrcode'), UUID = require('uuid-js'), sha1 = require('sha1'), redis = require('redis'), redisClient = redis
.createClient('10087', '192.168.111.122'), redisKey = 'QRCODE_LOGIN_TOKEN';
redis 的客户端也一并创建了,并设置了key
web服务的基础结构如下:
http.createServer(function(req, res) {
// parse URL
var url_parts = url.parse(req.url);
var path = url_parts.pathname;
var uuid4 = UUID.create();
var _sessionID = uuid4.toString();
if (path == '/') {
//...
} else if (path == '/poll') {
// console.log('polling');
} else if (path ==