PeerJS、WebRTC库的使用方法介绍

725 阅读2分钟

使用WebRTC工作可能是很难的。PeerJS是一个很棒的库,它使WebRTC更容易。

我写过关于WebRTC的文章。那篇文章描述了使用该协议使两个网络浏览器直接通信的细节。

在那篇教程中,我提到有一些库可以抽象出你必须注意的许多细节,以允许WebRTC通信。

其中一个库是PeerJS,它使实时通信变得非常简单。

首先,你需要有一个后端,让两个客户端在能够直接对话之前进行同步。

在一个文件夹中,使用npm init ,初始化一个npm项目,使用npm install peerjs ,安装PeerJS,然后和你可以使用以下方式运行它 npx:

(运行npx peerjs --help ,看看你可以使用的所有选项)。

这就是你的后端 🙂

现在我们可以创建一个最简单的应用程序,做一些有用的事情。我们有一个接收器和一个发送器。

首先我们创建接收器,它连接到我们的PeerJS服务器,并监听进入它的数据。new Peer() 的第一个参数是我们的对等体名称,为了清楚起见,我们称之为receiver

包括PeerJS客户端(将库的版本改为最新的可用版本)。

<script src="https://cdnjs.cloudflare.com/ajax/libs/peerjs/0.3.16/peer.min.js"></script>

然后我们初始化Peer 对象。当另一个对等体连接到我们时,connection 事件被调用。当我们收到一些数据时,data 事件就会被调用,并带有有效载荷。

const peer = new Peer('receiver', { host: 'localhost', port: 9000, path: '/' })

peer.on('connection', (conn) => {
  conn.on('data', (data) => {
    console.log(data);
  })
})

让我们来创建通信的另一端。我们称之为sender ,因为它将连接并向接收方发送消息。

我们初始化Peer 对象,然后我们要求对等体连接到我们之前注册的receiver 对等体。一旦连接建立,open 事件就会发生,我们就可以调用连接上的send() 方法,向另一端发送数据。

const peer = new Peer('sender', { host: 'localhost', port: 9000, path: '/' })

const conn = peer.connect('receiver')

conn.on('open', () => {
  conn.send('hi!')
})

这是你可以做的最基本的例子。

首先你打开接收方页面,然后你打开发送方页面。接收者直接从发送者那里获得信息,而不是从一个集中的资源那里。服务器部分只需要交换信息,以便2个部分可以连接。在那之后,它就不会再有任何干扰了。