实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端

本文主要介绍手机扫描二维码登录的服务器端实现,涉及到6个接口设计:手机客户端登录、首页、二维码图片流、long polling维持、接收扫描及确认登录通知。文中提到微信27秒刷新策略,但示例未实现,建议读者自行完成。此外,讨论了session的加密处理、long polling的响应对象管理和可能的商用优化。最后指出实际应用中可能需要服务器生成的钥匙进行页面跳转和登录确认。
摘要由CSDN通过智能技术生成

终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的。

服务器端要做得事很多,虽然逻辑不是很复杂,但是我们必须要分析清楚我们要做哪些事,请看下图:


通过这张图,我们看出,服务器端的接口一共有6个,分别处理:

  1. 手机客户端登录
  2. 首页
  3. 二维码图片流
  4. long polling维持
  5. 接收手机客户端已扫描的通知
  6. 接收手机客户端已确认登录的通知
那么一个一个解决

首先是手机客户端登录,在上一篇我们介绍的手机客户端登录我们仅仅模拟一下,因此用户只需要提交一个用户名,服务器则通过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 == 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值