7.设置信令服务来交换消息
你会学到什么
在此步骤中,您将了解如何:
-
使用npm来安装package.json中指定的项目依赖关系
-
运行Node服务器并使用node-static来提供静态文件。
-
使用socket.io在Node上设置消息传递服务。
-
使用它来创建“房间”和交换消息。
此步骤的完整版本在步骤-04文件夹中。
概念
为了建立和维护WebRTC呼叫,WebRTC客户端(对等体)需要交换元数据:
-
候选(网络)信息。
-
提供和回答消息提供媒体信息,如分辨率和编解码器。
换句话说,在可以进行音频,视频或数据的点对点流传输之前需要进行元数据的交换。这个过程称为信令( signaling )。
在前面的步骤中,发送方和接收方RTCPeerConnection对象位于同一页面上,因此“信令”仅仅是在对象之间传递元数据的问题。
在现实世界的应用中,发送者和接收者RTCPeerConnections在不同设备上的网页中运行,我们需要一种方式来传达元数据。
为此,我们使用信令服务器:可以在WebRTC客户端(对等体)之间传递消息的服务器。实际的消息是纯文本:字符串化的JavaScript对象。
关于应用程序
在这一步中,我们将构建一个简单的Node.js信令服务器,使用Socket.IO Node模块和JavaScript库进行消息传递。 Node.js和Socket.IO的经验将是有用的,但并不重要;消息传递组件非常简单。
选择正确的信令服务器
该codelab使用Socket.IO作为信令服务器。
Socket.io的设计使得它能够直接构建一种交换消息的服务,而Socket.io由于其内置的“房间”概念,适合于WebRTC信令。
对于生产级别的服务,可能会有更好的选择。请参阅 如何为您的下一个WebRTC项目选择信令协议 。
在此示例中,服务器(Node应用程序)在index.js中实现,运行在其上的客户机(Web应用程序)在index.html中实现。
此步骤中的Node应用程序有两个任务。
首先,它作为一个消息传递:
其二,它管理WebRTC视频聊天室:
我们简单的WebRTC应用程序最多允许两个对等体共享一个房间。
HTML和JavaScript
更新index.html,看起来像这样: