首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PeerJS文本聊天

PeerJS文本聊天
EN

Stack Overflow用户
提问于 2014-01-04 18:41:25
回答 2查看 4.7K关注 0票数 3

我目前正在编写一个基于web的聊天客户端,其中两个人随机连接到对方,并被扔进聊天中,没有提示。

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

我已经在他们的网站(here)上查看了他们的示例,并且我稍微修改了代码以适合我(主要是它的外观和一些输出是什么)。

我遇到的一个问题是,他们的代码需要两个人手动输入对方的id,没有双方的验证,聊天就不会开始(这意味着,他们都必须输入id并按下“连接”按钮)。

下面是我在头脑中运行过的一些代码,试图解决:

首先,我必须侦听与PeerJS的连接:

代码语言:javascript
复制
myPeer.on("connection", function() {...});

但同时,我希望监听在同一客户机上打开连接,因为我不想提示用户输入彼此的ids:

代码语言:javascript
复制
myConn.on("open", function() {...})

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

我的问题是我不知道如何同时做到这两点。如果有帮助的话,我会尝试在视频聊天的同时进行视频聊天,我已经想通了,所以如果我能以某种方式利用这个连接,那也是可行的。我完全控制了这个项目,所以我几乎可以做任何我想做的事情(包括开关库,如果一个库更容易使用或更发达的话)。

EN

回答 2

Stack Overflow用户

发布于 2014-02-26 08:33:34

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

考虑接收端的以下代码:

代码语言:javascript
复制
var peer = new Peer('clientID');
peer.on('connection', function(con){
    con.on('data', function(data){
        console.log('Incoming data', data);
        con.send('REPLY');
    });
});

现在在发送端使用以下代码:

代码语言:javascript
复制
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个套接字。因为这个问题已经提了几个月了,所以我暂时不再使用双插槽解决方案。如果你还需要它,请告诉我。

票数 2
EN

Stack Overflow用户

发布于 2022-02-20 19:24:20

根据他们的文档,如果不知道对等体的id就无法连接到对等体,因为他们在这里提到https://peerjs.com/docs.html#start当我们想要连接到另一个对等体时,我们需要知道他们的对等体ID。您负责在您站点的用户之间传递对等in。

我建议您使用socket.io (或其他您喜欢的即时数据传输方式)来传递这些I

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20919880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档