PeerJS文字聊天

时间:2014-01-04 10:41:25

标签: javascript websocket peerjs

我目前正在编写一个基于网络的聊天客户端,其中两个人随机相互连接,并且没有提示就被扔进聊天。

我正在使用PeerJS库,因为我发现它对我来说是最容易理解的。我现在处于阻塞点:我不确定如何实际实现文本聊天。

我已经在他们的网站上查看了他们的示例(here),我稍微修改了代码以便为我工作(主要是它的外观以及输出的内容)。

我遇到的一个问题是他们的代码需要两个人手动输入另一个人的ID,如果没有两个人的验证,聊天将无法启动(意思是,他们都必须输入ID并按下“连接”按钮)。

以下是我试图解决的一些代码:

首先,我必须听取与PeerJS的联系:

myPeer.on("connection", function() {...});

但与此同时,我想听同一个客户端上的连接,因为我不想提示用户互相提供ID:

myConn.on("open", function() {...})

但这是不可能的(据我所知),因为在我打开与上面的myConn监听器的连接之前,我不知道myPeer会是什么。

我的问题是我不知道如何同时做这些。如果它有帮助的话,我试图和它一起进行视频聊天,我已经弄明白了,如果我能以某种方式捎带那个连接或其他什么,那也是有效的。我完全控制了项目,所以我可以做任何我想做的事情(包括切换库,如果一个更易于使用或更开发)。

1 个答案:

答案 0 :(得分:2)

connection事件会为您提供DataConnection个实例。

在接收端考虑以下代码:

var peer = new Peer('clientID');
peer.on('connection', function(con){
    con.on('data', function(data){
        console.log('Incoming data', data);
        con.send('REPLY');
    });
});

现在在发送端使用此代码:

var peer = new Peer();
var con = peer.connect('clientID');
con.on('data', function(data){ ... });
con.send('HELLO WORLD');

在发送消息之前等待连接打开很重要。对于上述内容,您可以使用con.on('open', function(){ ... });

DataConnections的行为类似于TCP套接字。如果您想要双向通信,可以使用2个对等体的2个插槽。由于这个问题已经有几个月了,我现在就要离开双插槽解决方案了。如果您还需要它,请告诉我。