第二十四天

1-说明 http express 和 koa 的路由参数分别怎么获取

  http:
  app.get('/add/:name/:age/:sex',function(req,res){
  res.send(req.params);
  });


  express:
  router.get('/student/:id',function(req, res, next){
  var id = req.params.id;
  })


  koa:
  ctx.request.query
  ctx.query

 

2-简单说明动态路由
  动态获取路由地址,在对特定地址经行路由
  //动态路由
  //index没有参数,导致路由无法匹配
  //:占位符

  // 接收请求
  app.get('/index/:id/:name/:age', (req, res) => {
      console.log(req.params)
          //get请求参数
      res.send(req.params)
  });
 
3-说明 express 和 koa 的中间件的使用

  express中间件一个接一个的顺序执行, 通常会将 response 响应写在最后一个中间件中


  koa2的中间件是通过 async await 实现的,中间件执行顺序是“洋葱圈”模型。
  中间件之间通过next函数联系,当一个中间件调用 next() 后,会将控制权交给下一个中间件, 直到下一个中间件不再执行 next() 后, 将会沿路折返,将控制权依次交换给前一个中间件。

4-简述 koa 的洋葱圈模型
  
  //洋葱圈模型
  app.use(async(ctx, next) => {
      console.log('开始执行第一个中间件')
      await next()
      console.log('第一个中间件执行完成')

  })

  app.use(async(ctx, next) => {
      console.log('开始执行第二个中间件')
      await next()
      console.log('第二个中间件执行完成')

  })

  app.use(async(ctx, next) => {
      console.log('开始执行第三个中间件')
      await next()
      console.log('第三个中间件执行完成')

  })
 
  运行结果:
  开始执行第一个中间件
  开始执行第二个中间件
  开始执行第三个中间件
  第三个中间件执行完成
  第二个中间件执行完成
  第一个中间件执行完成
  每次当有一个请求进入的时候,每个中间件都会被执行两次。
  
5-扩展:了解 websocket

  WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

  WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

  在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

 

  创建 WebSocket 对象

  var Socket = new WebSocket(url, [protocol] );
  以上代码中的第一个参数 url, 指定连接的 URL。第二个参数 protocol 是可选的,指定了可接受的子协议。

  WebSocket 属性
  Socket.readyState   只读属性 readyState 表示连接状态,可以是以下值:
              0 - 表示连接尚未建立。
              1 - 表示连接已建立,可以进行通信。
              2 - 表示连接正在进行关闭。
              3 - 表示连接已经关闭或者连接不能打开。
  Socket.bufferedAmount   只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。

  WebSocket 事件
  Socket.onopen   连接建立时触发
  Socket.onmessage   客户端接收服务端数据时触发
  Socket.onerror   通信发生错误时触发
  Socket.onclose   连接关闭时触发

  WebSocket 方法
  Socket.send()   使用连接发送数据
  Socket.close()   关闭连接

posted @ 2021-03-07 16:17  1825632889  阅读(39)  评论(0)    收藏  举报