一个简单的例子

Alice 和 Bob 都是共同呼叫服务的用户。为了进行通信,必须将它们同时连接到实现呼叫服务的 Web 服务器。的确,当他们将浏览器指向呼叫服务网页时,他们将下载包含 JavaScript 的 HTML 页面,该 JavaScript 使浏览器通过安全的 HTTP 或 WebSocket 连接保持与服务器的连接。

当 Alice 单击 web page 按钮启动与 Bob 的调用时,JavaScript 实例化 PeerConnection 对象。创建 PeerConnection 后,调用服务端的 JavaScript 代码需要设置媒体,并通过 MediaStream 函数完成此任务。 Alice 还必须允许调用服务访问她的摄像机和麦克风。

在当前的 W3C API 中,一旦添加了一些流,则 Alice 的浏览器中将添加丰富的 JavaScript 代码,从而生成信令消息。 此类消息的确切格式尚未完全定义。 我们确实知道它必须包含媒体频道信息和 ICE 候选者,以及将通信绑定到 Alice 的公钥的指纹属性。 然后将该消息发送到信令服务器(例如,通过 XMLHttpRequestWebSocket )。

图1-5 描绘了与 Alice 和 Bob 之间的实时,启用浏览器的通信通道的建立相关的典型呼叫流程。

信令服务器处理来自 Alice 浏览器的消息,确定这是对 Bob 的呼叫,然后将信令消息发送到 Bob 的浏览器。

Bob 浏览器上的 JavaScript 处理传入的消息并提醒 Bob。 如果 Bob 决定接听电话,则在他的浏览器中运行的 JavaScript 随后将实例化与来自 Alice 一方的消息相关的 PeerConnection。 然后,将发生类似于 Alice 浏览器上的过程。 Bob 的浏览器会验证呼叫服务已获得批准并创建了媒体流; 之后,将包含媒体信息,ICE 候选对象和指纹的信令消息通过信令服务发送回 Alice。

图1-5

图1-5 从 Alice 的角度来看通话设置