使用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个部分可以连接。在那之后,它就不会再有任何干扰了。