Express4.x + Websocket(ws) + Session共享(redis)

笔记内容:  

express 服务器,搭载websocket服务器(用ws作为框架)并和 express 共享session。

session 用redis 进行管理。

#Part 1  配置 redis

1. 安装库:

"express-session":"1.13.0",

"cookie-parser":"1.4.3",

"connect-redis-sessions":"1.2.0"

2. 撸码:

app.js 中 代码:

Express4.x + Websocket(ws) + Session共享(redis)_第1张图片

备注:

1.很多网上资料,db 为一个字符串,应该是错的(或者我太弱,不懂能弄成字符串)。

redis 分库,是数字,默认是16个(0-15),我被这个坑了一下午

2. session 的 cookie 的配置, secure 如果弄成 true, 会导致 redisStrore 和 express cookie 不一致. 至于为什么,怎么处理,就不懂了 


#part 2    http 请求中在cookie 写入 session ID 


Express4.x + Websocket(ws) + Session共享(redis)_第2张图片
将sessionID 写入 cookie 让part3中的 ws服务器使用


#part 3   WebSocket 服务器

1. 安装库:

"ws":"^1.1.0",

2.撸码(自己写的WSServer.js 文件):


Express4.x + Websocket(ws) + Session共享(redis)_第3张图片
WSServer.js

简单说明:获取 cookie中的sessionID( 由part 2 写入的) 然后从 sessionStore 中获取对应的session.

备注:网上的很多例子,都是用express3.x 写的,所以,他们的cookieParser不一样。

注意,cookieParser = require('cookie-parser')(); 

后面还有个 括号。


3. 启动WSServer

在 bin/www 中 加入

Express4.x + Websocket(ws) + Session共享(redis)_第4张图片
启动WSServer


最后注意下,web 浏览器的地址,都要写成127.0.0.1:3000 ,如果 有的写127.0.0.1:300 ,有的写 localhost:3000 , cookie 就会取不到了。(这个是我这种新手才会犯的错误)

你可能感兴趣的:(Express4.x + Websocket(ws) + Session共享(redis))