Electron 开发实战
邓耀龙
美团高级前端工程师
21224 人已学习
新⼈⾸单¥59
课程目录
已完结/共 35 讲
Electron 开发实战
登录|注册
留言
15
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 22 | 信令服务:如何连接两端(下)
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述:学完这门课程你能得到什么?
03 | Electron介绍:为什么Electron这么火?
04 | 揭秘Electron架构原理:Chromium + Node.js是如何一起工作?
05 | 桌面端技术选型:如何选择合适的桌面端技术?
06 | Electron开发准备:环境搭建及前期准备
07 | 第一个Electron应用:开发一个简单版的番茄钟(上)
08 | 第一个Electron应用:开发一个简单版的番茄钟(下)
09 | 与Web开发不同(一):主进程与渲染进程
10 | 与Web开发不同(二):进程间通信
11 | 与Web开发不同(三):Native能力及原生GUI
12 | 与Web开发不同(四): 释放前端想象力,基于Electron能做什么?
13 | 实战项目综述:整体需求分析
14 | 设计思路:做远程控制有几步?
15 | 项目架构与基础业务:Electron 与 React 框架结合
16 | 主页面基础业务:Real World IPC
17 | 傀儡端实现(一):基于Electron能力捕获桌面视频流
18 | 傀儡端实现(二):如何接收&响应指令?
19 | 傀儡端实现(三):基于WebRTC传输视频流(上)
20 | 傀儡端实现(四):基于WebRTC传输视频流(下)
21 | 信令服务:如何连接两端(上)
23 | 指令传输实现:如何建立数据传输?
22 | 信令服务:如何连接两端(下)
24 | 项目完善与总结(上):App特性
25 | 项目完善与总结(下):原生GUI
26 | Electron 应用打包:从HTML到安装包
27 | Electron 应用更新(一):软件更新的痛点
28 | Electron 应用更新(二):线上项目如何更新?
29 | Electron 质量监控:桌面端的质量抓手是什么?
30 | 使用原生能力:如何集成C++能力?
31 | Electron 自动化测试:如何编写端到端测试?
32 | Electron体验优化:如何优化白屏问题?
33 | Electron客户端的安全:从XSS到RCE
34 | Electron bad parts:辩证看待Electron技术
35 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(15)

  • 最新
  • 精选
阿阳
远程控制这个项目,随着教程的推进,难度真是越来越大。老师车开的挺快的,以前没有过音视频和WebRTC方面积累的同学,容易晕车。还是要反复的看和学习。其实音视频这方面,建议老师有机会再重新开个全新的教程,我觉得肯定会受欢迎。

作者回复: 感谢你的建议。教程第二章的确会有点难度,作为入门希望能帮到大家。

2020-03-14
2
nuo-promise
control.js 中使用 win.webContents.send 总是报 webContents undefined

作者回复: 你这个你定位一下win是否存在吧,一般这种大概率是语法错误了。

2020-07-15
Kimmy
老师,遇到了这个问题:https://github.com/upcwangying/remote-control Uncaught Exception: Error [ERR_UNHANDLED_ERROR]: Unhandled error. ({ msg: 'user not found' }) at EventEmitter.emit (events.js:199:17) at WebSocket.incoming (/Users/ying/workspace/ElectronProjects/remote-control/app/main/signal.js:14:10) at WebSocket.emit (events.js:210:5) at Receiver.receiverOnMessage (/Users/ying/workspace/ElectronProjects/remote-control/node_modules/ws/lib/websocket.js:800:20) at Receiver.emit (events.js:210:5) at Receiver.dataMessage (/Users/ying/workspace/ElectronProjects/remote-control/node_modules/ws/lib/receiver.js:436:14) at Receiver.getData (/Users/ying/workspace/ElectronProjects/remote-control/node_modules/ws/lib/receiver.js:366:17) at Receiver.startLoop (/Users/ying/workspace/ElectronProjects/remote-control/node_modules/ws/lib/receiver.js:142:22) at Receiver._write (/Users/ying/workspace/ElectronProjects/remote-control/node_modules/ws/lib/receiver.js:77:10) at doWrite (_stream_writable.js:431:12)

作者回复: 这是js报错,错误栈顺着找就行

2020-05-02
2
科大码王
老师,git上面signal起的websockter是存在bug的,signal/index.js的41行是拿不到sendRemote方法的,应该是sendData

作者回复: 可能会存在遗漏,欢迎提pr指正😄

2020-04-19
刘小宅
我按照老师的步骤来, 通过连接傀儡端的控制吗A JavaScript error occurred in the main process Uncaught Exception: ReferenceError: createControlWindow is not defined at EventEmitter.<anonymous> (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/app/main/ipc.js:23:5) at EventEmitter.emit (events.js:203:13) at WebSocket.<anonymous> (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/app/main/signal.js:22:12) at WebSocket.emit (events.js:203:13) at Receiver.receiverOnMessage (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/node_modules/_ws@7.2.1@ws/lib/websocket.js:800:20) at Receiver.emit (events.js:203:13) at Receiver.dataMessage (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/node_modules/_ws@7.2.1@ws/lib/receiver.js:423:14) at Receiver.getData (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/node_modules/_ws@7.2.1@ws/lib/receiver.js:353:17) at Receiver.startLoop (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/node_modules/_ws@7.2.1@ws/lib/receiver.js:139:22) at Receiver._write (/Users/liuhao/Desktop/zhishi/note/Electron/remote-control/node_modules/_ws@7.2.1@ws/lib/receiver.js:74:10) 这个错误, 而且连接控制之后页面是空白的

作者回复: 看错误栈就是你的createControlWindow方法没补上吧。

2020-03-06
zc
这块按照老师的步骤,连接成功控制后,页面是空白,需要手动刷新下才能显示显示视频。系统是windows10的,页面中并没有报错,请问老师是什么原因会造成这样的情况?

作者回复: win10下应该没有问题的,你可以试试我们的源码跑起来看看?再找一下差别,或者看看有没有什么抛错呢?如果还是有问题的话,你把代码链接贴上来。我们可以看看https://github.com/dengyaolong/geektime-electron/tree/master/Chapter%202/12-remote-control

2020-02-13
jiaoym
您好。electron^8.2.5版本下运行代码白屏,internal_decoder_factory.cc(56)] Trying to create decoder for unsupported format
2020-05-11
4
paopaomo
pc.onicecandidate 里调用ipcRenderer.send('forward', 'control-candidate',e.candidate)时, 如果没有 JSON.stringify(e.candidate) 的话,传的值是 {}.是不是应该在这里 JSON.stringify,然后在addIceCandidate 函数中new RTCIceCandidate(JSON.parse(candidates[i]))
2020-02-23
5
3
Geek_d24136
感觉看vim真难受的一点就是不知道当前文件的目录是哪个,老师就爽他自己了
2022-06-20
2
Geek_428b11
老师您好,调用ipcRenderer.send('forward', 'control-candidate',e.candidate)出现错误如下: Uncaught Error: An object could not be cloned. at EventEmitter../lib/renderer/api/ipc-renderer.ts.ipcRenderer.send (ipc-renderer.ts:10) at RTCPeerConnection.pc.onicecandidate (E:\Project\Vue\RemoteControl\src\renderer\pages\control\peer-control.js:59) 是因为RTCIceCandidate对象无法发送的原因嘛?请问这个问题如何才能解决?
2020-05-26
3
2
收起评论