Discuss / JavaScript / 总体逻辑

总体逻辑

Topic source

Cool

#1 Created at ... [Delete] [Delete and Lock User]

 *  基于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.最后就是客户端将响应数据渲染到相应页面


  • 1

Reply