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