客户申请
测试此应用程序的一种方法是打开两个浏览器选项卡并尝试相互发送消息。
首先,我们需要安装
引导程序库。Bootstrap 是用于开发 Web 应用程序的前端框架。
您可以在http://getbootstrap.com/了解更多信息。创建一个名为“textchat”的文件夹。这将是我们的根应用程序文件夹。在此文件夹中创建一个文件
package.json(这是管理 npm 依赖项所必需的)并添加以下内容 -
然后运行npm install bootstrap。这将在textchat/node_modules文件夹中安装引导程序库。
现在我们需要创建一个基本的 HTML 页面。使用以下代码在根文件夹中创建一个index.html文件 -
这个页面你应该很熟悉。我们添加了bootstrap css 文件。我们还定义了两个页面。最后,我们创建了几个文本字段和按钮来从用户那里获取信息。在“聊天”页面上,您应该看到带有“chatarea”ID 的 div 标签,我们所有的消息都将显示在该标签中。请注意,我们添加了指向client.js文件的链接。
现在我们需要与我们的信令服务器建立连接。使用以下代码在根文件夹中创建client.js文件 -
现在通过节点服务器运行我们的信令服务器。然后,在根文件夹中运行静态命令并在浏览器中打开页面。您应该看到以下控制台输出 -
下一步是使用唯一的用户名实现用户登录。我们只需将用户名发送到服务器,然后服务器会告诉我们它是否已被使用。将以下代码添加到您的client.js文件 -
首先,我们选择一些对页面元素的引用。我们隐藏调用页面。然后,我们在登录按钮上添加一个事件监听器。当用户点击它时,我们将他的用户名发送到服务器。最后,我们实现 handleLogin 回调。如果登录成功,我们将显示调用页面、建立对等连接并创建数据通道。
要与我们需要的数据通道开始对等连接 -
- 创建 RTCPeerConnection 对象
- 在我们的 RTCPeerConnection 对象中创建一个数据通道
将以下代码添加到“UI 选择器块” -
修改handleLogin函数 -
如果登录成功,应用程序将创建RTCPeerConnection对象并设置onicecandidate处理程序,该处理程序将所有找到的 icecandidates 发送到其他对等点。它还创建了一个数据通道。请注意,在创建 RTCPeerConnection 对象时,构造函数中的第二个参数可选:[{RtpDataChannels: true}] 如果您使用的是 Chrome 或 Opera,则该参数是必需的。下一步是为其他同行创建报价。一旦用户得到报价,他就会创建一个答案并开始交易 ICE 候选人。将以下代码添加到client.js文件 -
我们将点击处理程序添加到呼叫按钮,它会启动报价。然后我们实现onmessage处理程序期望的几个处理程序。它们将被异步处理,直到两个用户都建立了连接。
下一步是实现挂断功能。这将停止传输数据并告诉其他用户关闭数据通道。添加以下代码 -
当用户点击挂断按钮时 -
- 它将向其他用户发送“离开”消息。
- 它将关闭 RTCPeerConnection 以及数据通道。
最后一步是向另一个对等点发送消息。将“点击”处理程序添加到“发送消息”按钮 -
现在运行代码。您应该能够使用两个浏览器选项卡登录到服务器。然后,您可以与其他用户建立对等连接并向他发送消息,以及通过单击“挂断”按钮关闭数据通道。
以下是整个client.js文件 -