下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 25 | RPC 调用:Node.js net建立多路复用的RPC通道
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

Node.js开发实战

共57讲 · 约600分钟
3753
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | Node.js是什么?
免费
04 | Node.js可以用来做什么?
免费
05 | 课程实战项目介绍
06 | 什么是技术预研?
07 | Node.js开发环境安装
08 | 第一个Node.js程序:石头...
09 | 模块:CommonJS规范
10 | 模块:使用模块规范改造石...
11 | 模块:npm
12 | 模块:Node.js内置模块
13 | 异步:非阻塞I/O
14 | 异步:异步编程之callback
15 | 异步:事件循环
16 | 异步:异步编程之Promise
17 | 异步:异步编程之async/...
18 | HTTP:什么是HTTP服务器?
19 | HTTP:简单实现一个HTTP服...
20 | HTTP:实现网页版石头剪刀...
21 | HTTP:用express优化石头...
22 | HTTP:用koa优化石头剪刀...
23 | RPC 调用:什么是RPC调用...
24 | RPC调用:Node.js Buffe...
25 | RPC 调用:Node.js net...
26 | 项目启动:整体需求分析
27 | 项目启动:极客时间App下...
28 | 课程详情页:极客时间详情...
29 | 课程详情页:将ES6模版字...
30 | 课程详情页:极客时间详情...
31 | 课程播放页:极客时间播放...
32 | 课程播放页:GraphQL API...
33 | 课程播放页:极客时间播放...
34 | 课程列表页:极客时间列表...
35 | 课程列表页:用 Vue/Rea...
36 | 课程列表页:极客时间列表...
37 | 性能工具:HTTP服务的性能...
38 | 性能工具:Node.js性能分...
39 | 代码优化:JavaScript代码...
40 | 代码优化:内存管理优化
41 | 代码优化:Node.js C+...
42 | 多进程优化:Node.js子进...
43 | 多进程优化:Node.js cl...
44 | 多进程优化:进程守护与管...
45 | 架构优化:动静分离
46 | 架构优化:反向代理与缓存...
47 | 概念:框架设计和工程化
48 | 概念:设计模式
49 | 概念:Serverless
50 | 服务端框架搭建:koaless
51 | 服务端框架搭建:屏蔽请求...
52 | 服务端框架搭建:完成服务...
53 | 云函数式工程实现:服务端...
54 | 云函数式工程实现:工具端...
55 | 加餐:调试 Node.js 源...
56 | 结束语
57 | 彩蛋:这是一个严肃的课程
本节摘要

精选留言(14)

  • 2019-10-23
    很爽!但是没满足
    2
  • 2019-11-15
    想问下老师这个画板工具是啦个?有点顺畅啊感觉!

    作者回复: photoshop和灵巧的双手

    1
  • 2019-12-11
    老师 为啥不直接用Buffer.from来直接填充那些值呢这个多方便啊,用那个这个readIn32这个api好处是啥?

    作者回复: 因为这是一个和后台协商好的协议,每个字段的类型和占用位数都是要和后台对好的,粗暴地from不一定方便控制这点。

    只是为了写代码方便可以用protobuf

  • 2019-12-11
    客服端 服务端通信用可以用http
    老师这为什么用socket

    作者回复: 课程里有说,socket更高效,而且已有的后台服务可能是用socket的,你用node搭服务还是要考虑现有服务的复用的。

  • 2019-11-21
    老师 客户端接收出现乱码 比如这种 �10 | 模块:使用模块规范改造石头剪刀布游戏

    作者回复: 有可能是切割buffer的时候位数不对

    1
  • 2019-11-08
    报错:First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
    解决:Buffer.from(data[lessonid]+'')
  • 对RPC这部分比较感兴趣,希望老师后面可以有关于这方面的实战

    作者回复: 实战项目章有这部分内容,Rpc的客户端和服务端都有实现

  • 2019-10-21
    老师,能解释下源码里面多路复用那里,有一段新旧 buffer 的拼接操作是什么意思吗,但如果是拼接 tcp 多路复用的 buffer,我去掉这块拼接逻辑貌似也是能正确返回数据的。
    if (oldBuffer) {
       buffer = Buffer.concat([oldBuffer, buffer])
    }

    作者回复: 因为一个data事件触发的时候,给到的buffer有可能是不完整的包,需要和下一次data事件触发给到的buffer拼接之后,再解。

    你逻辑正确有可能是没遇到net模块抛出不完整包的情况

  • 2019-10-21
    老师,全双工这边的客户端代码,假数据定义放在最底下,会不会进入暂时性死区,我这边跑不起来,把这个常量定义到顶部先定义,后使用,就运行成功了。

    作者回复: 跑得通就太好了,代码放的位置不太是这里的重点。

    1
  • 2019-10-20
    不够过瘾
  • 2019-10-20
    没接触过后端,这点好难理解啊,老师,怎 么样才能快速理解这点

    作者回复: 不用因为没接触过后端而觉得束手束脚。跟前两节课说的一样:rpc和ajax就是差不多的东西,ajax的底层、http1.1的底层也就是半双工通信。你只是在更深入地理解前端技术。

  • 催更催更
  • 2019-10-19
    多路复用具体是指什么哈?老师能稍微详细说明下这个多路复用吗

    作者回复: 多路复用就是在一个通信通路(tcp连接)上多次进行通信,减少建立连接的消耗。所以最好要求通信通路支持全双工通信

  • 2019-10-18
    大概什么时候能更新完?