{"id":13694939,"url":"https://github.com/nashaofu/webrtc-demo","last_synced_at":"2025-03-16T16:30:50.943Z","repository":{"id":48456439,"uuid":"277565425","full_name":"nashaofu/webrtc-demo","owner":"nashaofu","description":"webrtc 演示示例","archived":false,"fork":false,"pushed_at":"2023-08-29T13:36:06.000Z","size":243,"stargazers_count":145,"open_issues_count":2,"forks_count":23,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T03:51:08.924Z","etag":null,"topics":["webrtc","webrtc-demos","webrtc-video"],"latest_commit_sha":null,"homepage":"https://nashaofu.github.io/webrtc-demo/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nashaofu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-07-06T14:32:26.000Z","updated_at":"2025-02-28T05:29:48.000Z","dependencies_parsed_at":"2024-03-03T06:42:39.951Z","dependency_job_id":null,"html_url":"https://github.com/nashaofu/webrtc-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nashaofu%2Fwebrtc-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nashaofu%2Fwebrtc-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nashaofu%2Fwebrtc-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nashaofu%2Fwebrtc-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nashaofu","download_url":"https://codeload.github.com/nashaofu/webrtc-demo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243896318,"owners_count":20365355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["webrtc","webrtc-demos","webrtc-video"],"created_at":"2024-08-02T17:01:51.334Z","updated_at":"2025-03-16T16:30:50.524Z","avatar_url":"https://github.com/nashaofu.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# webrtc-demo\n\nwebrtc 演示示例，可在[预览地址](https://www.nashaofu.com)直接使用，或者在[https://nashaofu.github.io/webrtc-demo/](https://nashaofu.github.io/webrtc-demo/)查看基本显示效果，项目更多介绍可在公众号[代码骑行与美食](https://mp.weixin.qq.com/s/0C9jWmiiUisziAntgJLn1g)中查看\n\n更多 WebRTC 介绍：https://mp.weixin.qq.com/s/VQwvyaitC1L8noIq5Bnwjw\n\n## 使用说明\n\n1. 生成 tls 证书\n\n```bash\nmkdir tls\n\ncd tls\n\nopenssl genrsa -des3 -passout pass:x -out server.pass.key 2048\n\n# writing RSA key\nopenssl rsa -passin pass:x -in server.pass.key -out server.key\n\nrm server.pass.key\n\nopenssl req -new -key server.key -out server.csr\n\nopenssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt\n```\n\n2. 双击`tls/server.crt`安装 tls 证书到系统，然后信任该证书。具体参考：https://blog.csdn.net/cuk0051/article/details/108319531\n\n3. 安装依赖启动服务\n\n```bash\nyarn\n\nyarn start\n```\n\n4. 在浏览器中打开终端输出的地址，如遇到证书安全问题可参考https://blog.caojun.xyz/posts/macos_trust_ssl/\n5. index.html 是使用复制文本握手的示例，http.html 是使用 http 建立连接的示例，socket.html 是用来演示 socket 建立连接的示例\n\n## webRTC 连接建立流程\n\n![webrtc.svg](./docs/img/webrtc.svg)\n\n交换 offer 和 iceCandidata 通常通过 socket 来交换，目的是方便对方网络情况变化后能够推送到参与会话的人，其实这个交换过程也可以用其他任何方式，只要能相互交换信息就可以。例如，A 创建会话后，把自己的 offer 和 iceCandidata 通过邮件发送给 B，B 把这些信息设置到自己的会话中，然后把自己的 offer 和 iceCandidata 发送给 A，只要在这期间网络状况没发生变化，就能够正常通话。关于 webRTC，[这篇文章](https://juejin.im/post/5dcb652cf265da4d194864a3)讲得比较不错。\n\n## MDN webRTC 连接流程介绍\n\n![webRTC-mdn.png](./webRTC-mdn.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnashaofu%2Fwebrtc-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnashaofu%2Fwebrtc-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnashaofu%2Fwebrtc-demo/lists"}