如果你已经能写 Spring Boot 的增删改查,却在一道「服务端怎么主动推消息给客户端」的题面前卡住,这门课就是冲这个缺口来的。它不教你 Spring Boot 怎么起步,而是拿一个仿微信的场景,把 Netty 这条链路从连接建立、编解码、心跳、会话管理一路做到能和 Spring Boot 后端、客户端接上。学之前先掂量一下:IO 模型、TCP 粘包拆包、序列化这几块,你是不是只会背名词。
先确认三个能力缺口
第一,Spring Boot 的 Web 层你熟,但换成 Netty 之后,请求不再是 DispatcherServlet 那一套,而是 ChannelHandler 里的入站出站事件。Pipeline 里 handler 的添加顺序、@Sharable 什么时候能用、ByteBuf 的引用计数怎么释放,这些不弄清楚,代码能跑但会漏内存。第二,IM 的核心是长连接和消息可达:心跳检测怎么判定假死、断线重连由谁发起、离线消息落到哪里。第三,协议设计。微信类场景不是简单发字符串,需要自定义消息体、区分消息类型、处理后端与前端的字段对齐——这一步做不好,联调时会反复怀疑是网络问题,其实是编解码写错了。
这门课怎么组织
整体走的是「单机跑通 → 接入 Spring Boot → 补全客户端」的顺序。前半段用 Netty 搭出能收发消息的服务端骨架,把 EventLoop、ChannelPipeline、编解码器这些基础件过一遍,重点落在粘包拆包的处理上——这是新手最容易忽略、上线后最常出问题的地方。中段把 Netty 服务嵌进 Spring Boot 的生命周期里,解决端口占用、Bean 注入、启动顺序这些实际摩擦。后半段拼上客户端,让一条消息真正走完「客户端发出 → 服务端路由 → 另一端收到」的闭环,顺带处理登录鉴权、会话保持、群聊消息分发这类场景。
配套练习该怎么做
- 每写完一个 handler,先用单元测试或最小 main 方法单独验证,不要等整套跑起来再排查。
- 把心跳间隔和超时阈值改小,人为断网,观察重连日志,确认你对状态流转的判断和代码一致。
- 自己加一个消息类型(比如撤回或已读回执),完整走一遍协议定义、编解码、业务处理,这是检验你是否真的理解协议层的方式。
- 压测一下单机连接数,看看线程模型和内存占用,理解 EventLoop 线程数与连接数的关系。
看完应能回答的问题
Netty 的 ByteBuf 和 NIO ByteBuffer 在使用上差别在哪,为什么前者更适合做编解码中间层?自定义协议时,长度字段放在哪、用几个字节,会直接影响后面所有解码逻辑,你的方案怎么定?一个连接从建立到断开,服务端需要维护哪些状态,这些状态存在哪里、什么时机清理?如果客户端弱网频繁掉线重连,服务端如何避免重复登录和消息错乱?Spring Boot 里的 Netty 服务,优雅停机时怎么保证正在处理的消息不丢?
这些问题没有背下来的标准答案,答得出说明你把连接、协议、会话这三层串起来了。答不出,就回到对应章节重做一遍练习——这门课的价值不在看完,在于你能不能独立复现一条可靠的消息通道。
image.webp 下载附件 保存到相册 2025-6-10 17:01 上传
课程推荐
《Netty+Spring Boot仿微信-全栈开发高性能后台及客户端》image.webp 下载附件 保存到相册 2025-6-10 17:01 上传【技能收获】学完可掌握:核心实战技能、项目驱动学习。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。
视频目录(150 节)
* 1-2 课程介绍.mp4
* 2-1 初始netty.mp4
* 2-2 阻塞和非阻塞、同步和异步的概念.mp4
* 2-3 BIO讲解.mp4
* 2-4 NIO讲解.mp4
* 2-5 BIO NIO AIO的区别与理解.mp4
* 2-6 再看netty.mp4
* 2-7 netty的三种线程模型.mp4
* 3-1 使用maven构建netty基础依赖.mp4
* 3-2 构建hello服务器.mp4
* 3-3 为channel设置初始化器.mp4
* 3-4 编写自定义助手类.mp4
* 3-5 hello服务器启动与讲解.mp4
* 3-6 netty生命周期.mp4
* 4-1 实时通信相关概念讲解.mp4
* 4-2 编写websocket服务端启动类.mp4
* 4-3 编写websocket子处理器initialzer.mp4
* 4-4 编写chatHandler对消息的处理.mp4
* 4-5 基于js的websocket相关api介绍.mp4
* 4-6 简单实用hbuilder工具编写前端websocket.mp4
* 4-7 测试web端携手移动端与后端netty聊天通信.mp4
* 5-1 MUI,H5+,Hbuilder介绍.mp4
* 5-2 创建项目,页面基本结构讲解.mp4
* 5-3 自定义标题栏样式.mp4
* 5-4 真机调试与原生标题栏样式更改.mp4
* 5-5 首页底部tab选项卡的使用,MUI图标库讲解.mp4
* 5-6 使用阿里图标库构建自己的icon库.mp4
* 5-7 tab选项卡切换页面(上).mp4
* 5-8 tab选项卡切换页面(下).mp4
* 6-1 数据库表设计.mp4
* 6-2 使用mybatis逆向工具.mp4
* 6-3 搭建springboot2.0工程.mp4
* 6-4 maven配置国内镜像.mp4
* 6-5 springboot整合mybatis.mp4
* 6-6 整合netty server.mp4
* 6-7 完成netty整合springboot并且测试.mp4
* 7-1 注册登录页面讲解与后端接口开发1.mp4
* 7-2 注册登录页面讲解与后端接口开发2.mp4
* 7-3 登录注册页面的判断事件与js自定义util.mp4
* 7-4 登录注册前后端联调.mp4
* 7-5 首页禁止返回和用户自动登录讲解.mp4
* 7-6 开发我的个人页面.mp4
* 7-7 动态初始化个人信息.mp4
* 7-8 打开个人头像页面.mp4
* 7-9 增加可选择菜单.mp4
* 7-10 为菜单增加事件绑定.mp4
* 7-11 选择照片与裁剪插件.mp4
* 7-12 文件服务器概览.mp4
* 7-13 安装tracker服务.mp4
* 7-14 安装storage服务.mp4
* 7-15 配置client并且上传测试图片.mp4
* 7-16 nginx安装与fastdfs配置(上).mp4
* 7-17 nginx安装与fastdfs配置(下).mp4
* 7-18 fastdfs 整合springboot.mp4
* 7-19 后端上传图片功能开发.mp4
* 7-20 上传图片前后端联调与测试.mp4
* 7-21 服务调用内网互通原则.mp4
* 7-22 实现手机相册选择照片上传.mp4
* 7-23 头像上传后跨页面调用自定义事件刷新.mp4
* 7-24 上传头像细节部分处理与openwindow的bug处理.mp4
* 7-25 下载头像到相册.mp4
* 7-26 修改昵称页面.mp4
* 7-27 修改昵称后端接口.mp4
* 7-28 修改昵称前后端联调.mp4
* 7-29 用户二维码生成.mp4
* 7-30 我的二维码作业布置.mp4
* 7-31 我的二维码作业讲解.mp4
* 7-32 用户退出以及简单小结.mp4
* 8-1 发现页面编码.mp4
* 8-2 搜索朋友账号接口(上).mp4
* 8-3 搜索朋友账号接口(下).mp4
* 8-4 搜索朋友前后端联调.mp4
* 8-5 搜索结果页讲解以及webview传参.mp4
* 8-6 发送添加好友请求接口编码.mp4
* 8-7 前后端连天发送好友请求.mp4
* 8-8 查询好友请求接口.mp4
* 8-9 朋友接受到请求页面联调开发.mp4
* 8-10 好友请求HTML动态渲染.mp4
* 8-11 同意或忽略事件动态绑定.mp4
* 8-12 同意或忽略controller.mp4
* 8-13 同意或忽略的service编写.mp4
* 8-14 好友请求忽略或拒绝前后台联调.mp4
* 8-15 构建扫描器.mp4
* 8-16 扫码器颜色自定义.mp4
* 8-17 扫码添加好友联调.mp4
* 8-18 延时加载预处理数据.mp4
* 8-19 mui 自带索引列表模板讲解.mp4
* 8-20 通讯录列表整合.mp4
* 8-21 图文列表和通讯录整合增加用户头像显示.mp4
* 8-22 查询用户的所有好友列表接口.mp4
* 8-23 手机端获取好友列表保存到本地.mp4
* 8-24 定义通讯录好友列表模型.mp4
* 8-25 通讯录列表渲染展现.mp4
* 8-26 好友请求接收方更新通讯录.mp4
* 9-1 聊天页面讲解与展示.mp4
* 9-2 header动态改为好友昵称,动态滚动到最新消息.mp4
* 9-3 发送按钮的颜色状态改变.mp4
* 9-4 **出软键盘重新设置聊天窗口高度.mp4
* 9-5 发送消息前置条件网络状态判断.mp4
* 9-6 监听网络连接事件.mp4
* 9-7 发送消息html渲染.mp4
* 9-8 接收消息html渲染.mp4
* 9-9 发送消息与接收消息时的**播放.mp4
* 9-10 手机端websocket模型定义和发送消息.mp4
* 9-11 websocket接受消息的渲染_x264.mp4
* 9-12 服务器断开后的重连机制.mp4
* 9-13 chatHandler初步重构.mp4
* 9-14 构建聊天业务模型.mp4
* 9-15 chatHandler - 处理客户端连接.mp4
* 9-16 chatHandler - 保存聊天消息到数据库.mp4
* 9-17 chatHandler - 处理消息发送.mp4
* 9-18 chatHandler - 签收单条或多条消息.mp4
* 9-19 客户端onopen联调,初始化用户和channel关系.mp4
* 9-20 客户端发送消息与接收联调.mp4
* 9-21 接收方获得消息后重构渲染.mp4
* 9-22 客户端签收消息.mp4
* 9-23 websocket新增好友类型联调.mp4
* 9-24 保存聊天记录到本地.mp4
* 9-25 从本地获取聊天记录.mp4
* 9-26 初始化聊天记录和渲染.mp4
* 9-27 聊天快照业务简单讲解.mp4
* 9-28 保存聊天快照到本地.mp4
* 9-29 获取聊天快照.mp4
* 9-30 已读未读消息的设置与快照调用.mp4
* 9-31 展示聊天快照.mp4
* 9-32 未读消息小红点标记.mp4
* 9-33 点击快照开始聊天.mp4
* 9-34 未读消息标记已读.mp4
* 9-35 开发获取未读消息列表接口.mp4
* 9-36 前端获取未读消息列表.mp4
* 9-37 批量签收并且展示未读消息.mp4
* 9-38 聊天快照左滑删除效果.mp4
* 9-39 聊天快照右滑删除聊天记录与快照.mp4
* 10-1 心跳机制的概念与飞行模式.mp4
* 10-2 心跳HeartBeatHandler编码.mp4
* 10-3 配置空闲handler与超时时间设置.mp4
* 10-4 手机端与netty的心跳测试.mp4
* 10-5 前端keepalive保持,与心跳测试.mp4
* 11-1 云服务器购买推荐及安全组介绍与关联.mp4
* 11-2 文件传输工具的使用.mp4
* 11-3 命令行工具的简单使用.mp4
* 11-4 云服务器配置JDK环境.mp4
* 11-5 云服务器安装tomcat.mp4
* 11-6 云服务器离线安装MariaDB.mp4
* 11-7 云服务器MariaDB安全设置与客户端连接调试.mp4
* 11-8 云服务器安装图片服务器的注意事项以及nginx反向代理tomcat服务器.mp4
* 11-9 springboot工程打包.mp4
* 11-10 打包文件上传到云服务器并且进行tomcat部署.mp4
* 11-11 app云打包.mp4
* 12-1 课程总结.mp4
课程目录
第1章 课程介绍与学习指南 1-1 课前必读(不读错过一个亿) 1-2 即时通讯系统-课程导学 (11:44) 第2章 为什么要自研一套即时通讯系统? 2-1 章节介绍 (00:57) 2-2 纵多成熟的IM系统,我们仍需要自研 (08:52) 2-3 如何自研一套即时通讯系统? (07:53) 2-4 章节总结 (01:49) 第3章 基础数据开发-用户&关系&群组 3-1 章节介绍 (01:12) 3-2 业务系统的基石 – 用户模块业务分析&数据库设计 (04:47) 3-3 带你看看大型企业级项目使用什么结构管理项目骨架的 (03:18) 3-4 导入用户资料,删除用户资料,修改用户资料,查询用户资料 (17:34) 3-5 即时通讯中最有价值的数据 – 关系链模块业务分析&数据库设计 (04:11) 3-6 导入、添加、更新好友业务功能实现 (33:00) 3-7 删除好友、所有好友的业务功能实现 (07:14) 3-8 拉取指定好友信息&拉取所有好友信息业务功能实现 (03:32) 3-9 校验好友关系其实比你想象中的复杂 (24:16) 3-10 添加、删除、校验黑名单业务功能实现 (01:39) 3-11 获取所有好友申请列表&好友申请列表已读&审批好友申请业务功能实现 (18:20) 3-12 好友分组(类似微信的好友标签)业务介绍&DB设计 (01:59) 3-13 好友分组创建、添加&删除成员&好友分组删除业务功能实现 (04:17) 3-14 即时通讯最复杂的模块 – 群组模块业务分析&数据库设计 (07:40) 3-15 导入群、群成员 (19:59) 3-16 创建群组、修改群信息&获取群信息业务功能实现 (17:10) 3-17 获取用户加入的群列表业务功能实现 (07:54) 3-18 解散群组、转让群主业务功能实现 (01:44) 3-19 拉人入群成员、移除群聊&退出群聊业务功能实现 (03:09) 3-20 获取群成员信息&修改群成员信息接口业务功能实现 (02:26) 3-21 禁言群、禁言群成员业务功能实现 (02:33) 3-22 即时通讯为什么难? 3-23 作业:想实现和腾讯云类似的拓展资料,数据库要如何设计? 3-24 章节总结 (03:45) 第4章 BIO,NIO&Netty入门 4-1 章节介绍 (01:44) 4-2 BIO线程模型详解 – 彻底搞懂BIO如何工作 (08:23) 4-3 NIO线程模型详解 – 彻底搞懂NIO如何工作 (11:26) 4-4 BIO和NIO总结 (03:30) 4-5 详解Netty (03:51) 4-6 Nett初体验-上手写第一个Netty程序 (10:02) 4-7 NIO与BIO详解 4-8 作业:使用Netty实现分数录入返回是否及格 4-9 章节总结 (01:14) 第5章 Netty企业开发必须掌握的技能 5-1 章节介绍 (00:59) 5-2 使用Netty实现聊天室 (08:11) 5-3 窥探编解码器 – 初识Netty编解码 (08:08) 5-4 Netty底层数据流转的核心 – pipeline机制详解 (06:56) 5-5 传输层协议TCP留给我们的难题-Netty解决半包、粘包方案(一) (10:48) 5-6 传输层协议TCP留给我们的难题-使用私有协议解决半包、粘包(二) (10:18) 5-7 ByteBuf核心API讲解 (08:48) 5-8 IdleStateHandler心跳机制源码详解-揭开主流注册中心心跳机制实现原理 (12:07) 5-9 Netty的源码解析-掌握Netty核心功能的实现 (11:16) 5-10 使用Netty实现文件上传 (12:16) 5-11 Nett服务端启动流程源码详解 5-12 作业:使用Netty实现简单的HTTP服务器 5-13 章节总结 (01:30) 第6章 IM开发核心 之构建TCP网关(上) 6-1 章节介绍 (00:35) 6-2 正式开始编写IM主程序ServerBootstrap (05:54) 6-3 WebSocketServerProtocolHandler-给我们的程序添加webSocket支持 (02:50) 6-4 Snakeyaml解析配置文件 – 动态配置tcp程序 (12:35) 6-5 大白话讲通信协议 – 详解主流通信协议 (06:52) 6-6 私有协议编解码-设计篇 (05:52) 6-7 私有协议编解码-实现篇 (14:00) 第7章 IM开发核心之构建TCP网关(下) 7-1 章节介绍 (03:37) 7-2 登录消息 – 保存用户NioSocketChannel为channel设置自定义属性 (09:56) 7-3 分布式缓存中间件 – Redisson快速入门操作数据&发布订阅 (09:46) 7-4 用户登录网关层 – 保存用户Session (12:46) 7-5 用户退出网关层 – 离线删除用户Session (09:28) 7-6 服务端心跳检测 – IdleStateHandler (13:57) 7-7 RabbitMQ的安装、发布订阅、路由模式详解 (11:20) 7-8 TCP接入RabbitMQ,打通和逻辑层交互 (14:38) 7-9 分布式TCP服务注册中心的技术选型 (06:38) 7-10 TCP服务注册 – Zookeeper注册TCP服务 (12:39) 7-11 服务改造 – TCP服务分布式改造 (13:40) 7-12 即时通讯系统支持多端登录模式-应对多端登录的场景(一) (08:16) 7-13 即时通讯系统支持多端登录模式-应对多端登录的场景(二) (10:05) 7-14 即时通讯系统如何支持多端登录模式-应对多端登录的场景(三) (23:08) 7-15 拓展:详解Zookeeper 7-16 作业:利用这两章知识来实现一个简易版的登录+单聊即时通讯系统 7-17 章节总结 (02:39) 第8章 打通业务服务器与IM服务器&多端同步 8-1 章节介绍 (02:19) 8-2 负载均衡策略-随机模式 (13:24) 8-3 负载均衡策略-轮训模式 (02:58) 8-4 负载均衡策略-一致性hash方式(TreeMap实现) (15:36) 8-5 配置文件配置负载均衡策略 (06:42) 8-6 回调机制介绍-业务系统和im系统同步数据 (02:50) 8-7 使用Apache-HttpClient封装https请求工具类和回调方法 (06:59) 8-8 编写用户资料变更回调 (03:00) 8-9 编写好友模块回调 (08:43) 8-10 编写群组模块回调 (10:07) 8-11 启动一个新的应用服务验证回调机制 (02:44) 8-12 tcp通知机制介绍-多端数据同步 (04:02) 8-13 封装查询用户Session工具类 (07:19) 8-14 封装MessageProducer给用户发送消息 (13:41) 8-15 编写用户资料变更通知 (06:30) 8-16 编写好友模块TCP通知 (10:06) 8-17 封装GroupMessageProducer给群组用户发送消息 (04:43) 8-18 编写群组模块TCP通知 (07:47) 8-19 TCP服务处理逻辑层投递的MQ消息 (08:41) 8-20 接口调用鉴权加密-加解密算法HMAC-SHA256演示 (03:00) 8-21 接口调用鉴权加密-统一入口拦截器加密校验用户请求 (20:55) 8-22 拓展:RabbitMQ简介 8-23 根据一致性hash自己实现一个自定义负载均衡策略 8-24 章节总结 (00:34) 第9章 消息业务的流程之打通消息收发核心 9-1 章节介绍 (00:57) 9-2 重中之重 – 消息收发核心流程梳理 (03:17) 9-3 单聊消息分发逻辑-RabbitMQ连接tcp层和网关层 (08:56) 9-4 单聊消息分发逻辑-发送消息前置校验 (16:17) 9-5 单聊消息分发逻辑-消息分发主流程 (19:25) 9-6 详细分析群聊业务 (01:03) 9-7 发送群聊消息前置校验 (06:32) 9-8 群聊消息分发逻辑是怎样的? (13:09) 9-9 即时通讯聊天记录存储结构&单聊群聊读扩散or写扩散选型 (08:15) 9-10 IM消息ID专题 – 分布式自增id解决方案介绍 (01:45) 9-11 如何将单聊消息持久化到DB上? (13:21) 9-12 如何将群聊消息持久化到DB上? (04:09) 9-13 手把手带你编写发送单聊&群聊消息的接口 (06:57) 9-14 章节总结 (00:59) 第10章 消息业务的核心之消息可达性、一致性、幂等性、实时性 10-1 章节介绍 (01:52) 10-2 消息实时性 – 利用多线程解决消息串行问题,提升处理效率 (06:01) 10-3 消息实时性- 校验逻辑前置由tcp通过feign接口提前校验(一) (15:26) 10-4 消息实时性- 校验逻辑前置由tcp通过feign接口提前校验(二) (03:05) 10-5 消息实时性- 利用mq异步持久化消息(一) (07:13) 10-6 消息实时性- 利用mq异步持久化消息(二) (12:38) 10-7 用了tcp就不会丢包,丢消息了吗? (09:50) 10-8 单人消息可靠性- 双重ack保证上下行消息可靠(一) (06:11) 10-9 单人消息可靠性- 双重ack保证上下行消息可靠(二) (15:21) 10-10 (9分22喷麦)单人消息有序性 – 消息并行可能导致消息乱序,如何保证客户端消息有序性 (12:18) 10-11 消息幂等性 – 保证消息不“重复”(一) (07:49) 10-12 消息幂等性 – 保证消息不“重复”(二) (11:43) 10-13 单聊优化总结 (04:39) 10-14 群聊消息实时性 – 消息并行,持久化解耦,校验前置 (11:33) 10-15 群聊消息有序性 – 消息并行可能导致消息乱序,如何保证客户端消息有序性 (02:35) 10-16 群聊消息消息幂等性 – 保证消息不“重复” (04:59) 10-17 详解消息已读的实现方案 (05:14) 10-18 构建聊天会话 – 消息已读功能实现(一) (13:34) 10-19 构建聊天会话 – 消息已读功能实现(二) (16:27) 10-20 构建聊天会话 – 会话置顶,删除会话接口 (15:12) 10-21 离线消息 – 离线消息设计与实现(一) (06:10) 10-22 离线消息 – 离线消息设计与实现(二) (23:32) 10-23 章节总结 (01:20) 第11章 揭秘QQ、微信数据同步的演进 11-1 剖析qq和微信背后数据同步的完整过程 (11:48) 11-2 关系链模块问题修复 (03:39) 11-3 如何将关系链数据全量拉取改为增量拉取?(一) (15:00) 11-4 如何将关系链数据全量拉取改为增量拉取?(二) (16:56) 11-5 如何将会话数据全量拉取改为增量拉取? (04:29) 11-6 如何将群组数据全量拉取改为增量拉取? (05:05) 11-7 手把手带你实现增量同步接口(一) (05:52) 11-8 手把手带你实现增量同步接口(二) (09:02) 11-9 手把手带你实现增量同步接口(三) (13:41) 11-10 手把手带你编写获取用户sequence接口 (06:27) 11-11 如何实现增量拉取离线消息 (12:11) 11-12 客户端数据库sqlite介绍 (04:46) 11-13 sqlite案例-uniapp-nview模式开发原生客户端演示sqlite数据库 (06:48) 11-14 章节总结 (04:07) 第12章 打造QQ在线状态功能之为你的应用增添色彩 12-1 章节介绍 (02:18) 12-2 在线状态设计 (02:17) 12-3 netty网关用户状态变更通知&登录ack (08:25) 12-4 逻辑层处理用户上线下线 (12:47) 12-5 在线状态订阅-临时订阅 (11:58) 12-6 带你实现手动设置客户端状态接口 (08:36) 12-7 推拉结合实现在线状态更新 (10:12) 12-8 章节总结 (01:21) 第13章 IM拓展之IM能做的事还有很多 13-1 章节介绍 (01:42) 13-2 IM进阶拓展 – 如何让陌生人只能发送几条消息&消息监管、鉴黄功能 (05:36) 13-3 IM进阶拓展 – 如何实现消息撤回 (17:23) 13-4 IM进阶拓展 – 如何设计亿级聊天记录存储方案(一) (15:32) 13-5 IM进阶拓展 – 如何设计亿级聊天记录存储方案(二) (09:08) 13-6 IM进阶拓展 – 视频通话实现思路和流程 (10:10) 13-7 IM进阶拓展–红包功能如何实现? 13-8 IM进阶拓展–智能对话机器人 13-9 IM进阶拓展–如何开发匿名聊天 13-10 IM进阶拓展–如何开发公众号 13-11 章节总结 (00:54) 第14章 系统对接&sdk讲解 14-1 演示开发一款应用如何接入我们的系统(一) (15:50) 14-2 演示开发一款应用如何接入我们的系统(二) (14:02) 14-3 web版sdk讲解 (17:47) 第15章 课程总结 15-1 课程总结 (05:12)






