Arquiteto Front-end e Co-fundador da comunidade DevParaná
Media Stream
addTrack
onaddtrack
Com a criatividade humana, os itens anteriores são apenas o começo pra uma nova forma de comunicação
Por ser ponto a ponto, elimina a necessidade de serializar e re-codificar em cada etapa do processo
Oferecer aplicativos RTC ricos e de alta qualidade, como teleconferência de áudio e vídeo e troca de dados ponto a ponto, requer muitas novas funcionalidades no navegador
Sinalização, descoberta de pares, negociação de conexão, segurança e camadas inteiras de novos protocolos são apenas alguns componentes necessários para reunir tudo
WebRTC é projetado para que funcione com tecnologias já existentes, como VoIP, clientes SIP,
incluindo PSTN ou rede de telefonia pública...
Ainda que já habilitado e funcionando,
as APIs do navegador e dos níveis de
transporte e protocolo encontram-se
em desenvolvimento e podem mudar
no futuro
open
message
bufferedmountlow
closing
close
error
O transporte de dados foi estabelecido ou restabelecido.
Event
const conn = new RTCPeerConnection(config);
const channel = conn.createDataChannel(label, {
ordered: true, maxRetransmits: 10
});
As propriedades de configuração do transporte de dados, como configurações de entrega de pedido e modo de confiabilidade, são configuradas pelo par subjacente, conforme o canal é criado.
const onIceCandidate = (peer) => ({ candidate }) => {
console.log(JSON.stringify(peer.localDescription))
}
const onOffer = (peer) => (o) => {
peer.setLocalDescription(o)
}
const peer = new RTCPeerConnection()
peer.onicecandidate = onIceCandidate(peer)
const channel = peer.createDataChannel('channel')
channel.onmessage = ({ data }) => {
console.log(`%c ${data}`, 'font-size: 24px')
}
channel.onopen = console.log
peer.createOffer().then(onOffer(peer))
const onIceCandidate = (peer) => ({ candidate }) => {
console.log(JSON.stringify(peer.localDescription))
}
const onAnswer = (peer) => (o) => {
peer.setLocalDescription(o)
}
let channel
const onDataChannel = (peer) => (event) => {
channel = event.channel
channel.onmessage = ({ data }) => {
console.log(`%c ${data}`, 'font-size: 24px')
}
channel.onopen = console.log
}
const peer = new RTCPeerConnection()
peer.onicecandidate = onIceCandidate(peer)
peer.ondatachannel = onDataChannel(peer)
/* Cole a sessão do peer 1 */
peer.setRemoteDescription( )
peer.createAnswer().then(onAnswer(peer))
/* Cole a sessão do peer 2 */
peer.setRemoteDescription( )
HTTP
WebSock
SRTP
SDP
STUN
ICE
TURN
TLS
DTLS
TCP
UDP
SCTP
IP
WebRTC não está trazendo a comunicação em tempo real para o navegador... não apenas.
WebRTC está levando os recursos da Web para o mundo das telecomunicações. Uma industria que trabalha com valores na casa de trilhões anualmente, com ótimas novas oportunidades.