Join as Subscriber

JavaScript example (based on browser API):

// create WebRTC peer connection
let pc = new RTCPeerConnection();
// create a data channel labeled as "control"
let dc = pc.createDataChannel("control");

// setup callback
pc.onicecandidate = function(event) {
    if (event.candidate) {
        // ...
    } else {
        let offer = pc.localDescription;

        let type = "sub";
        let room = "testroom";  // modify this
        let id = "testuser";    // modify this
        let token = "mysecret"; // modify this
        let url = `/${type}/${room}/${id}`;   // modify this

        // send to Weever Streaming
        fetch(url, {
            method: "POST",
            headers: {
                "Content-Type": "application/sdp",
                "Authorization": `Bearer ${token}`,
            },
            body: offer.sdp,
        }).then(res => {
            res.text().then(function(answer) {
                pc.setRemoteDescription(new RTCSessionDescription({"type": "answer", "sdp": answer}));
            })
        });
    }
}

// data channel messages
dc.onmessage = e => {
    // WebRTC Renegotiation
    if (e.data.startsWith("SDP_OFFER ") == true) {
        let offer = e.data.slice(10);
        pc.setRemoteDescription(new RTCSessionDescription({"type": "offer", "sdp": offer}));
        pc.createAnswer()
            .then(answer => {
                pc.setLocalDescription(answer);
                dc.send("SDP_ANSWER " + answer.sdp);
            });
    }
}

pc.createOffer()
    .then(offer => {
        // set local SDP offer
        // this will trigger ICE gathering, and then onicecandidate callback
        pc.setLocalDescription(offer);
    });