• 第七篇 Scrum冲刺博客


    站立式会议

    会议照片

    队友完成情况

    团队成员 昨天完成的工作 今天计划的工作
    潘俊渊 完成项目使用过程流程图 项目基本完成,进行最终测试,开会总结,回顾过程
    倪佳建 回顾代码 参与最终测试,开会总结,会后反思
    张焜 回顾代码 一起测试,网上聚集开个会总结
    魏甫 回顾代码 进行测试,一起开会,回想经过
    张鹏 回顾代码 最终测试,参加会议
    马桂佳 回顾代码 与队员进行最后的测试,开会讨论经验

    工作遇到的困难

    团队成员 遇到的困难
    潘俊渊 怎么到最后,聚集人会这么难(飘了?)
    倪佳建 等待,电脑麦炸了?
    张焜 大家畅谈啊
    魏甫 最后好像没什么困难吧
    张鹏 ..........
    马桂佳 最近事情有点多,不能准时参会

    项目燃尽图

    成员代码/文档签入记录

    • 代码签入

    最新项目程序/模块

    • 程序代码
    // 存放 conn.id
    let seed = 2
    // 先建立一个假的 channel 里面已经有一个 id 为 2 的创建者
    let channels = [
     // {
     //   id: 1, // channel id
     //   rid: 2, // 创建者
     //   lid: 0, // 加入者
     //   status: true // 允许进入
     // }
    ]
    const server = wx.createServer(conn => {
     conn.on('text', data => {
       try {
         // 记录用户 id 以发送
         data = JSON.parse(data)
         conn.id = data.id
       } catch (e) {
    
       }
       if (data.hasOwnProperty('channelId') && data.channelId !== 0) {
         chatting(data)
       } else {
         dealNewUser(data)
       }
     })
     conn.on('close', (code, reason) => {
       console.log('webSocket断开连接:', reason)
       console.log('中断的connId:', conn.id )
       console.log('剩余连接数量', server.connections.length)
       let channel = findChannelByUserId(conn.id)
       broadcastById(channel, conn.id, '对方退出聊天室', true)
     })
    
     conn.on('error', (code, reason) => {
       // 其中一个用户主动退出,提醒另一个用户中断连接
       let channel = findChannelByUserId(conn.id)
       channel && broadcastById(channel, conn.id, '对方断开连接', true)
     })
    }).listen(9000)
    
    
    function dealNewUser(data) {
     console.log('新用户')
     let channel = findChannel()
     if (channel) {
       // 如果存在则加入
       console.log('新用户加入聊天')
       joinChannel(channel, data.id)
     } else {
       // 创建新 channel 并放回 channel.id
       console.log('新用户创建聊天')
       createChannel(data.id)
     }
    }
    // 寻找可加入的聊天室
    function findChannel() {
     for (let i=0; i<channels.length; i++) {
       if (channels[i].status) {
         return channels[i]
       }
     }
     return null
    }
    
    function createChannel(rid) {
     let channel = {
       id: seed++,
       rid,
       lid: 0,
       status: true
     }
     const id = channel.id
     channels.push(channel)
     setTimeout(_disconnect(id), 10000)
     return id
    }
    // 中断连接,先通过 channelId 发送中断连接消息,再断开连接
    function disconnect(channelId, msg='对方中断连接') {
     console.log('聊天室中断id:', channelId)
     const channel = findChannelById(channelId)
     if (channel) {
       channel.status && broadcastById(channel, channel.rid, msg, true)
    
     }
    }
    function _disconnect(channelId, msg='中断连接') {
     return function () {
       disconnect(channelId, msg)
     }
    }
    
    function joinChannel(channel, lid) {
     // 配置 lid
     channel.lid = lid
     // 变为不可加入
     channel.status = false
     broadcast(channel)
    }
    
    function broadcast(channel, msg = '聊天室建立成功') {
     server.connections.forEach(conn => {
       if (conn.id === channel.rid || conn.id === channel.lid) {
         const channelId = channel.id
         const data = JSON.stringify({
           channelId,
           channel,
           msg
         })
         conn.sendText(data)
       }
     })
    }
    
    function chatting(data) {
     const channel = findChannelById(data.channelId)
     broadcastById(channel, data.id, data.message)
    }
    

    成员每日总结

    团队成员 内容总结
    潘俊渊 项目基本结束了,虽然实现功能不多,但收获还是有的
    倪佳建 项目完结,我知道我拖后腿了,我将继续完善自我
    张焜 这是一段“丰富”的经历
    魏甫 芜湖芜湖
    张鹏 完结撒花
    马桂佳 终于结束了
  • 相关阅读:
    css文本省略号
    javascript在数组的循环中删除元素
    ASP.NET MVC 微信公共平台开发之 微信接入
    ASP.NET Url重写
    通过FTP连接Azure上的网站
    UniversalApp启动页面设置
    ASP.NET页面动态添加js脚本
    使用HyperV虚拟机装系统
    使用一般处理程序HTTPHandler下载文件
    Egret Engine(白鹭引擎)介绍及windows下安装
  • 原文地址:https://www.cnblogs.com/P-juan/p/12983531.html
Copyright © 2020-2023  润新知