Привет друзья Я работаю на подключение к многократным пэра идентификатор для текстового чата, когда я подключиться к только одного партнера он работаетWebRTC PeerJS Текстовый чат - Подключение к нескольким peerID одновременно
, но я получаю задача о подключении нескольких peerid одновременно
Например для подключения одного партнера мы будем использовать этот
var conn = peer.connect(peerId);
conn.on('open', function() {
connect(conn);
});
Когда я хочу подключиться к нескольким пэра ID
напр: вар peerIDs = [ 'peerid 1', 'peerid 2', 'peerid 3']
Я использую петлю для этого
for(var i=0 ; i < peerIDs.length ; i++){
conn = peer.connect(peerIDs[i]);
conn.on('open', function() {
connect(conn);
});
}
Вот полный код:
var userId = new Date().getTime();
//Get the ID from the server
var peer = new Peer(userId, {host: 'localhost', port: 3031, path: '/',debug: true });
var conn;
var connections = [];
//to receive id from the server
peer.on('open', function(id){
console.log('the id is' +id);
});
//in case of error
peer.on('error', function(e){
alert(e.message);
})
//Awaits for the connection
peer.on('connection', connect);
function connect(c){
conn = c;
connections[c.peer].on('data', function(data){
var mess = document.createElement('div');
mess.innerHTML = '<span class="peer">' + c.peer + '</span>: ' + data;
angular.element(document.querySelector('.messages')).append(mess);
});
connections[c.peer].on('close', function(){
alert(c.peer + 'has left the chat');
});
}
//When user clicks the chat button
$scope.chat = function(){
alert('user clicked the connect button');
var peerIDs = [ 'peerid 1', 'peerid 2', 'peerid 3']
for(var i=0 ; i < peerIDs.length ; i++){
var conn = peer.connect(peerIDs[i]);
conn.on('open', function() {
connections.push(c);
connect(conn);
});
}
}
//send message when clicked
$scope.send = function(){
// For each active connection, send the message.
var msg = angular.element(document.querySelector('#mess')).val();
//Send message to all connected peers
for(var i in connections){
connections[i].send(msg);
}
angular.element(document.querySelector('.messages')).append('<div><span class="you">You: </span>' + msg
+ '</div>');
}
Не могли бы вы дать представление о том, как достичь этого. Ваша помощь будет очень оценена.
Я думаю, что использование фиксированного массива peerIDS - это не очень хорошая идея. Вы можете создать окно ввода на своей странице, чтобы ввести удаленный peerId + «вызов». Всякий раз, когда у вас есть новый удаленный одноранговый узел для подключения, просто введите peerID и нажмите кнопку. Btw, мне не нужно устанавливать время задержки, как вы, все равно можете одновременно подключиться ко многим другим одноранговым узлам: D. – luongnv89
@ luongnv89: Array of PeerIDs - это мое требование к проекту. Фактически, когда пользователь, находящийся в сети, имеет peerID и их peerID через сокет, он будет храниться на сервере.Предположим, что если я хочу отправить человека, зарегистрированного как на мобильном, так и на веб-сервере, у меня будет два идентификатора peerID для правильного подключения, вот что такое массив. Если у вас есть какой-либо другой способ улучшить это, пожалуйста, поделитесь со мной. много для вашей помощи. – sdg
Да, в этом случае у вас будет два peerID для мобильных устройств и Интернета. Но вам также нужно избегать двух разных удаленных одноранговых узлов, например, у вас есть как видео с мобильных устройств, так и сеть только одного удаленного партнера. Хорошо, из журнала я думаю, что у вас уже есть два подключения к двум сверстникам. Вы можете проверить в консоли браузера: peer.connections, чтобы отобразить все соединения, которые у вас есть. И убедитесь, что при совершении вызова 2 удаленных идентификатора peer должны быть в сети. – luongnv89