Перенос JSON между браузерами с помощью WebRTC

Меня волновала перспектива WebRTC, когда я услышал об этом изначально. Это звучало как websockets, но без сервера. К сожалению, все обучающие материалы, которые я смог найти, подчеркнули видео и аудио аспекты WebRTC. Я ничего не могу найти о отправке текста/данных/JSON между браузерами. Не могли бы вы помочь мне написать простой мир приветствий, просто отправляя некоторые данные из одного браузера в другой с помощью WebbRTC?

Ответ 1

Это удар в темноте, но последний проект редакторов веб-API имеет интерфейс DataChannel как часть API одноранговых данных.

Однако текущий Рабочий проект не имеет этого API, поэтому, возможно, он очень новый и пока еще не реализован.

Ответ 2

DataChannel теперь реализован в Firefox (18+) и Chrome (25+), хотя он еще рано.

Для получения дополнительной информации см. статью HTML5 Rocks Начало работы с WebRTC.

Ответ 3

Эта функциональность еще не реализована в любой реализации WebRTC доставки. Как отмечали другие плакаты, теперь есть API DataChannel в последнем редакторе редакторов WebRTC, но протокол для этого все еще работает. Ожидайте увидеть этот API в браузере Chrome и Firefox в конце этого года.

Ответ 4

Это старый вопрос, но поскольку я начал изучать webRTC, я попытаюсь ответить на него.

Прежде всего, какое-то заблуждение:

Это звучало как websockets, но без сервера

Невозможно передать ЛЮБЫЕ данные между одноранговыми узлами WebRTC до того, как какая-либо информация (управление сеансом мультимедиа, сетевая конфигурация Nodes/мультимедийные возможности) была правильно обменена и согласована. Для этого вам нужен сервер и сигнализация (который не является частью webRTC: вы можете реализовать его так, как хотите).

Когда сигнализация завершена, вам необходимо создать RTCPeerConnection примерно так:

if (navigator.webkitGetUserMedia) {
   RTCPeerConnection = webkitRTCPeerConnection;
} else if(navigator.mozGetUserMedia){
   RTCPeerConnection = mozRTCPeerConnection;
   RTCSessionDescription = mozRTCSessionDescription;
   RTCIceCandidate = mozRTCIceCandidate;
}

а затем:

var connection = new RTCPeerConnection(servers);

После этого вы можете добавить свой канал данных в этот PeerConnection:

var dataChannel = connection.createDataChannel("channelName",{ reliable: true });

Когда это будет сделано, вы можете просто позвонить sendChannel.send('Any data you want');, и это приведет к отправке любых данных, которые вы хотите.

Во всяком случае, я нашел эту книгу действительно полезной. Он оставляет много неотвеченных вопросов, но для первого запуска это хорошо.

Ответ 5

Я считаю, что Мэтт уже знает, но для гостей Google: Да, вы можете использовать DataChannels.

С вашей стороны:

channel = somePeerConnection.createDataChannel("a Label");
channel.onopen = function() { channel.send("any thing") };

С другой стороны:

somePeerConnection.ondatachannel = function (evt) {
   evt.channel.onmessage = function (evt) {
       alert( evt.data );
   };
};

См. примеры:

Ответ 6

http://peerjs.com/ развивается и дает вам синтаксис websocket для p2p Передача данных между экземплярами браузера

Ответ 7

Как указал Джастин, протокол и API все еще прибиты; на последнем IETF я представил проект для младшего протокола под JS API. Окончательная форма, вероятно, будет очень близка к текущему предложению в черновике редактора, но вам, вероятно, также придется ждать "onopened" с принимающей стороны.

API моделируется на WebSocket api, чтобы облегчить перемещение кода из реализации WebSocket в DataChannels, хотя не все элементы в WebSocket переносятся (например, url), и, очевидно, DataChannel добавляет ряд способностей, которые не должны выполняться в WebSockets с ненадежными или частично надежными данными.