通过WebRTC进行实时通信-结合对等连接和信令

2020-04-02 18:35:19 浏览数 (1)

替换HTML和JavaScript

用内存的内容替换 index.html中的内容:

代码语言:javascript复制
<!DOCTYPE html>
<html>

<head>

  <title>Realtime communication with WebRTC</title>

  <link rel="stylesheet" href="/css/main.css" />

</head>

<body>

  <h1>Realtime communication with WebRTC</h1>

  <div id="videos">
    <video id="localVideo" autoplay muted></video>
    <video id="remoteVideo" autoplay></video>
  </div>

  <script src="/socket.io/socket.io.js"></script>
  <script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
  <script src="js/main.js"></script>
  
</body>

</html>

用 step-05/js/main.js替换 js/main.js。

运行 Node.js 服务

如果您没有从工作目录中关注此codelab,则可能需要安装step-05文件夹或当前工作文件夹的依赖项。从你的工作目录中运行下面的命令:

代码语言:javascript复制
npm install

一旦安装了,如果你的Node.js服务没有运行,调用下面的命令在你的工作目录下启动它:

代码语言:javascript复制
node index.js

确保你正在使用的是上一步Socket.IO实现的 index.js版本。对于更多的关于Node和Socket.IO的信息,查看一下“建立信令服务去交换消息”一节。

在你的浏览器上输入 localhost:8080。

在窗中的新 tab中再次输入localhost:8080。一个视频元素将显示从getUserMedia()获取的本地流,而另一个将通地 RTCPeerConnection显示'远端'视频流。

你需要重起你的 Node.js 服务,在每次你关闭tab或窗口时。

在浏览器console中查看日志。

点滴

  1. 该应用仅支持1对1的视频聊天,你可以改变这个设计使更多的人共享同一个视频吗?
  2. 这个例子有一个房间名为foo的硬编码,有更好的方法开启另一个房间名吗?
  3. 用户间如何共享房间名?尝试建立一个共享房间名称的替代方案。
  4. 如何改变应用?

你学到什么

在该步骤中你学会了如何:

  • 使用在Node.js上的 Socket.IO运行 WebRTC信令服务。
  • 使用该服务在用户间交换WebRTC 元数据。

本步骤的完整例子在step-05目录下。

提示

  • WebRTC 将态和调试数据可以在chrome://webrtc-internals查看。
  • test.webrtc.org可用于查测你的本地环境和测试你的camera及microphone。
  • 如果您遇到奇怪的缓存问题,请尝试以下方法:
    • 按住ctrl并单击“重新加载”按钮进行硬刷新
    • 重启浏览器
    • 在命令行运行npm cache clean

下一步

了解如何拍摄照片,获取图像数据以及在远程同伴之间共享照片。

0 人点赞