(數(shù)據(jù)庫續(xù))
數(shù)據(jù)庫操作實例(注冊和登錄功能)
- 數(shù)據(jù)庫結(jié)構(gòu)
-
接口
注冊:
/reg?user=xxx&pass=xxx
=>{err:0, msg:'原因'}
登錄:
/reg?user=xxx&pass=xxx
=>{err:0, msg:'原因'}
文件壓縮
let rs = fs.createReadStream(`www${pathname}`);
let gz = zlib.createGzip();
//這個是錯的界拦,不要writeHeader晚碾,writeHeader會把所有的Header重寫了,會報錯
// res.writeHeader('Content-Encoding', 'gzip');
//所以要用setHeader
res.setHeader('Content-Encoding', 'gzip');
rs.pipe(gz).pipe(res);
rs.on(`error`, err=>{
res.writeHeader(404);
res.write('Not Found');
res.end();
})
雙層md5加密
let md5Key='fjasdklfjasldfjskldfjsdklfjioewurwe34343324fsdfsdfsdfasf./,.;k,;;fds34bm,l$#43';
function md5(data){
let hash = crypto.createHash('md4');
hash.update(data);
return hash.digest('hex');
}
//雙層md5加密
function md5_2(data){
return md5(md5(data) + md5Key);
}
WebSocket
- 雙向通信
- 自動跨域
- 性能高
例子
//server
const http=require('http');
const io=require('socket.io');
let httpServer = http.createServer();
httpServer.listen(8080);
let wsServer = io.listen(httpServer);
wsServer.on('connection', sock=>{
sock.on('aaa', function(a, b, c){
sock.emit('event', '服務(wù)器接收到了消息征唬,返回');
console.log(a, b, c);
})
})
client
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- socket.io/socket.io.js 庫文件提供io字段 -->
<script src="http://localhost:8080/socket.io/socket.io.js" charset="utf-8"></script>
<script>
//協(xié)議變成ws
let sock = io.connect('ws://localhost:8080/');
sock.emit('aaa', 12, 5, 8);
sock.on('event', function(msg){
alert(msg);
})
</script>
</head>
<body>
</body>
</html>