2014-01-04 2 views
2

В настоящее время я пишу веб-чат-клиент, в котором два человека случайно соединяются друг с другом и бросаются в чат вместе без подсказки.Текстовый чат PeerJS

Я использую библиотеку PeerJS, так как я нашел ее наиболее понятной для меня. Я нахожусь в блокирующей точке: я не уверен, как реально реализовать текстовый чат.

Я рассмотрел их пример на своем сайте (here), и я немного изменил код, чтобы работать для меня (в основном, как он выглядит и что представляет собой выход).

Проблема, с которой я столкнулся, заключается в том, что их код требует, чтобы два человека вводили идентификатор другого пользователя вручную, и чат не запускался без проверки обоих людей (что означает, что оба они должны ввести идентификатор и нажать кнопку «Подключиться») ,

Ниже приведен код, я побежал через мою голову, чтобы попытаться отработать:

Сначала я должен слушать в связи с PeerJS:

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

Но в то же время, я хочу для прослушивания открытия соединения на одном клиенте, так как я не хочу, чтобы побудить пользователей друг друга идентификаторами:

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

Но это невозможно (насколько я знаю), так как я могу ' t знать, что myConn будет, пока я не открою соединение с прослушивателем myPeer выше.

Моя проблема заключается в том, что я не знаю, как это делать одновременно. Если это вообще помогает, я пытаюсь сделать видео-чат рядом с этим, что я все понял, поэтому, если бы я мог каким-то образом отключиться от этой связи или что-то еще, это тоже работает. У меня есть полный контроль над проектом, поэтому я могу делать все, что захочу (включая библиотеки коммутаторов, если один из них более прост в использовании или более развит).

+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 одноранговых узлов. Поскольку этот вопрос составляет пару месяцев, я сейчас оставляю решение с двойной розеткой. Дайте мне знать, если вам все еще нужно.

+0

Ivanhoe, а как насчет того, если я хочу отправлять сообщения и файлы в одном чате. Я смотрел https://github.com/peers/peerjs/blob/master/examples/chat.html, но эта реализация не сработала для меня. Любая помощь будет оценена! – Moh

+0

Извините Мох, я переехал в SimpleWebRTC и signalmaster некоторое время назад. У меня было бы несколько соединений с данными, одно для файлов и одно для чата. – Ivanhoe

+0

У меня, наконец, что-то работает, но я думаю, что это неправильный путь, потому что я создаю новое соединение каждый раз, когда хочу отправить текст или файл.Я попытался создать только два соединения, как вы предполагали, но не смог это сделать. Не могли бы вы дать несколько советов, как это решить? Это мой код https://github.com/simo163/webrtc/blob/apprtc/app/controllers/application.js – Moh

Смежные вопросы