* 基于websocket的聊天室总体逻辑:
* 1.用户先发送普通http请求 GET / ,每次处理url之前都会解析cookie放到ctx.state.user中
* 验证用户是否已登录,若登录放行到room.html页面
* 2.用户未登录,重定向到 GET /signin 进行登录 提交到POST /signin
* 3.POST /signing处理时就会设置cookie用来表明用户已登录,重定向到/
* 4.此时用户已登录,放行到room.html页面,客户端接收后会执行js,创建websocket,然后与服务器进行websocket握手,建立连接,此时发送的是标准http请求,会携带上面创建的cookie,但是先被websocket进行处理,而不是koa处理,就会触发WebSocketServer connection 事件 ,回调相应事件处理函数,传入服务器端建立的对应客户端的WebSocket,相应的请求内容被封装到该WebSocketupgradeReq,对该对象进行解析可以取出对应cookie,就可以判断当前用户是否已登录,若验证成功,连接就建立完毕,后续就可以直接通过tcp连接直接通信,不在是按照http协议,否则就关闭websocket连接,握手失败
*
* 5.最后就是客户端将响应数据渲染到相应页面
Sign in to make a reply
Cool
* 基于websocket的聊天室总体逻辑:
* 1.用户先发送普通http请求 GET / ,每次处理url之前都会解析cookie放到ctx.state.user中
* 验证用户是否已登录,若登录放行到room.html页面
* 2.用户未登录,重定向到 GET /signin 进行登录 提交到POST /signin
* 3.POST /signing处理时就会设置cookie用来表明用户已登录,重定向到/
* 4.此时用户已登录,放行到room.html页面,客户端接收后会执行js,创建websocket,然后与服务器进行websocket握手,建立连接,此时发送的是标准http请求,会携带上面创建的cookie,但是先被websocket进行处理,而不是koa处理,就会触发WebSocketServer connection 事件 ,回调相应事件处理函数,传入服务器端建立的对应客户端的WebSocket,相应的请求内容被封装到该WebSocketupgradeReq,对该对象进行解析可以取出对应cookie,就可以判断当前用户是否已登录,若验证成功,连接就建立完毕,后续就可以直接通过tcp连接直接通信,不在是按照http协议,否则就关闭websocket连接,握手失败
*
* 5.最后就是客户端将响应数据渲染到相应页面