我目前正在编写一个基于web的聊天客户端,其中两个人随机连接到对方,并被扔进聊天中,没有提示。
我正在使用PeerJS库,因为我发现它是我最容易理解的库。然而,我正处于一个阻塞点:我不确定如何真正实现文本聊天。
我已经在他们的网站(here)上查看了他们的示例,并且我稍微修改了代码以适合我(主要是它的外观和一些输出是什么)。
我遇到的一个问题是,他们的代码需要两个人手动输入对方的id,没有双方的验证,聊天就不会开始(这意味着,他们都必须输入id并按下“连接”按钮)。
下面是我在头脑中运行过的一些代码,试图解决:
首先,我必须侦听与PeerJS的连接:
myPeer.on("connection", function() {...});但同时,我希望监听在同一客户机上打开连接,因为我不想提示用户输入彼此的ids:
myConn.on("open", function() {...})但这是不可能的(据我所知),因为在我打开与上面的myPeer侦听器的连接之前,我不知道myConn将是什么。
我的问题是我不知道如何同时做到这两点。如果有帮助的话,我会尝试在视频聊天的同时进行视频聊天,我已经想通了,所以如果我能以某种方式利用这个连接,那也是可行的。我完全控制了这个项目,所以我几乎可以做任何我想做的事情(包括开关库,如果一个库更容易使用或更发达的话)。
发布于 2014-02-26 08:33:34
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个套接字。因为这个问题已经提了几个月了,所以我暂时不再使用双插槽解决方案。如果你还需要它,请告诉我。
发布于 2022-02-20 19:24:20
根据他们的文档,如果不知道对等体的id就无法连接到对等体,因为他们在这里提到https://peerjs.com/docs.html#start当我们想要连接到另一个对等体时,我们需要知道他们的对等体ID。您负责在您站点的用户之间传递对等in。
我建议您使用socket.io (或其他您喜欢的即时数据传输方式)来传递这些I
var peer = new Peer();
peer.on('open', function(id) {
console.log('My peer ID is: ' + id); //this will show you your ID
});
//then to connect to another peer
var conn = peer.connect('destination-peer-id'); //here you will use the destination peer that you have received using socket.io or another instant data transfer means you prefer
https://stackoverflow.com/questions/20919880
复制相似问题